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

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

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

Ответ 1

Keith Elder красиво сравнивает 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 на MSDN.

Обновить: ссылка кажется мертвой - попробуйте следующее: Что такое Windows Communication Foundation?

Ответ 2

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

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

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

Ответ 3

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

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

Для простого процесса разработки create webservicerun webserviceadd webservice reference, веб-сервис ASMX имеет очень малое, что может пойти не так, не так много, что вы можете неправильно сконфигурировать, и это сила.

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

Пример web.config для веб-службы ASMX:

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

Ответ 4

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

Ответ 5

Там много разговоров о простоте веб-служб 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 и т.д.

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