Каковы различия между веб-службами WCF и ASMX?


Я полностью запутался между веб-службами WCF и ASMX. Я использовал много веб-служб на моем раннем этапе, и теперь есть эта новая вещь, введенная под названием WCF. Я все еще могу создать WCF, который функционирует как веб-служба. Я думаю, что в WCF будет больше вещей.

в чем разница между WCF и веб-службами? Когда следует использовать каждый из них?

5 355

5 ответов:

Кит Элдер красиво сравнивает ASMX to WCF здесь. Проверить его.

другое сравнение ASMX и WCF может быть найти здесь - Я не 100% согласен со всеми пунктами, но это может дать вам идею.

WCF в основном "ASMX на стереоид" - это может быть все, что ASMX может-плюс намного больше!.

ASMX это:

  • легко и просто писать и настраивать
  • только доступна в IIS
  • только вызываемый из HTTP

WCF может быть:

  • размещенный в IIS, службе Windows, приложении Winforms, консольном приложении-у вас есть полная свобода
  • используется с HTTP (REST и SOAP), TCP/IP, MSMQ и многими другими протоколами

короче говоря: WCF здесь, чтобы полностью заменить ASMX.

Проверьте WCF Developer Center on MSDN.

обновление: ссылка кажется мертвой-попробуйте это:Что Такое Windows Communication Foundation?

веб-службы ASMX могут быть вызваны только HTTP (традиционный веб-сервис С.службы ASMX.) В то время как Служба WCF или компонент WCF могут быть вызваны любым протоколом (например, http, tcp и т. д.) и любой вид транспорта.

во-вторых, веб-службы ASMX не являются гибкими. Однако, Службы WCF являются гибкими. Если вы создадите новую версию сервиса, вам нужно просто выставить новый конец. Таким образом, услуги являются гибкими и это очень практичный подход, глядя на текущий бизнес тенденции.

мы разрабатываем WCF как контракты, интерфейс, операции и контракты данных. Как разработчик, мы больше ориентированы на услуги бизнес-логики и не должны беспокоиться о стеке каналов. WCF-это унифицированный программный API для любого вида служб, поэтому мы создаем службу и используем информацию о конфигурации для настройки механизма связи, такого как HTTP/TCP/MSMQ и т. д.

Это очень старый вопрос, но я не чувствую, что преимущества ASMX были справедливо изображены. Хотя веб-сервисы ASMX не очень гибкие, они очень просты в использовании и понимании. В то время как WCF-это более гибкая, она также более сложна, чтобы встать и настроить.

веб-службы ASMX готовы встать и добавить в качестве ссылки на веб-службу, как только вы добавите файл. (предполагая, что ваш проект строит)

для простого рабочего процесса разработки create webservice -> run webservice ->add webservice reference, веб-сервис ASMX имеет очень мало, что может пойти не так, не так много, что вы можете неправильно настроить, и это его сила.

в ответ на те, которые утверждают, что WCF заменяет ASMX, я бы ответил, что WCF нужно будет добавить оптимизированный режим конфигурации K. I. S. S., чтобы полностью заменить ASMX.

пример web.конфигурация для веб-сервиса ASMX:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <appSettings />
  <system.web>
    <compilation targetFramework="4.5" />
    <httpRuntime targetFramework="4.5" />
  </system.web>
</configuration>

WCF полностью заменяет веб-службы ASMX. ASMX-это старый способ создания веб-служб, а WCF-это текущий способ создания веб-служб. Все новые разработки веб-служб SOAP на клиенте или сервере должны выполняться с использованием WCF.

существует много разговоров о простоте веб-служб asmx над WCF. Позвольте мне прояснить несколько моментов.

  • Это правда, что начинающие разработчики веб-служб легко начнут работу в веб-службах asmx. Visual Studio делает всю работу за них и легко создает проект Hello World.
  • но если вы можете узнать WCF (что, конечно, не займет много времени), то вы можете увидеть, что WCF также довольно прост, и вы можете идти вперед легко.
  • важно помнить, что эти упомянутые сложности в WCF на самом деле приписываются красивым функциям, которые он приносит с собой. Есть адресация, привязки, контракты и конечные точки, службы и клиенты все упомянутые в файле конфигурации. Красота заключается в том, что ваша бизнес-логика отделена и поддерживается безопасно. Завтра, если вам нужно изменить привязку от basicHttpBinding до netTcpBinding вы можете легко создать переплет в конфигурационный файл и использовать его. Таким образом, все изменения, связанные с клиентами, каналами связи, привязками и т. д., должны быть сделаны в конфигурации, оставляя бизнес-логику безопасной и неповрежденной, что имеет реальный смысл.
  • WCF "веб-службы" являются частью гораздо более широкого спектра удаленной связи, включенной через WCF. Вы получите гораздо более высокую степень гибкости и переносимости, делая вещи в WCF, чем через традиционный ASMX, потому что WCF разработан с нуля, чтобы суммировать все различные распределенные программные инфраструктуры, предлагаемые Microsoft. Конечная точка в WCF может быть передана так же легко через SOAP/XML, как и через TCP/binary, и изменить этот носитель-это просто мод файла конфигурации. Теоретически это уменьшает количество нового кода, необходимого при переносе или изменении бизнес-потребностей, целей и т. д.
  • веб-службы могут быть доступны только через HTTP и он работает в среде без состояния, где WCF является гибким, потому что его службы могут размещаться в различных типах приложений. Вы можете разместить свои службы WCF в Console, Windows Services, IIS & WAS, которые снова являются различными способами создания новых проектов в Visual Studio.
  • ASMX старше WCF, и все, что может сделать ASMX, может сделать WCF (и многое другое). В основном вы можете видеть, что WCF пытается логически сгруппировать все различные способы получения двух приложений для общения в мире Microsoft; ASMX был только одним из этих многих способов и поэтому теперь сгруппирован под WCF зонтик возможностей.
  • вы всегда будете использовать Visual Studio для NET 4.0 или 4.5, поскольку это упрощает жизнь при создании служб WCF.
  • основное различие заключается в том, что веб-службы используют XmlSerializer. Но WCF использует DataContractSerializer, который лучше по производительности по сравнению с XmlSerializer. Вот почему WCF работает намного лучше, чем другие аналоги коммуникационных технологий из .NET, такие как asmx, .NET remoting и т. д.

Не забыть что я был одним из тех парней, которые любили службы asmx больше, чем WCF, но в то время я не был хорошо осведомлен о службах WCF и его возможностях. Я боялся конфигураций WCF. Но я осмелился и попытался написать несколько собственных служб WCF, и когда я узнал больше о WCF, теперь у меня нет никаких запретов о WCF, и я рекомендую их всем и каждому. Счастливого кодирования!!!