В чем разница между веб-методом asp.net и сервисом wcf? - PullRequest
56 голосов
/ 20 октября 2008

Я новичок в .Net и не понимаю разницы. Может ли кто-нибудь указать мне правильное направление?

Ответы [ 9 ]

43 голосов
/ 20 октября 2008

Веб-службы ASP.NET были разработаны для создания приложений, которые отправляют и получают сообщения с использованием протокола SOAP (Simple Object Access Protocol) через HTTP.

WCF позволяет приложениям .NET Framework обмениваться сообщениями с другими объектами программного обеспечения. SOAP используется по умолчанию, но сообщения могут быть в любом формате и передаваться с использованием любого транспортного протокола.

Вы можете просматривать веб-службы ASP.NET как подмножество служб WCF.

Здесь - ссылка, сравнивающая две структуры.

28 голосов
/ 20 октября 2008

Различия довольно легко узнать.

ASP.NET Web Method называется ASMX [из-за расширения файла] (проверьте 4GuysFromRolla об этом, у них есть хороший учебник )

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

[Примечание] вы можете защитить доступ к веб-службе с помощью сертификатов, но это сложно, но обычно в ASMX мы используем имя пользователя / пароль.

в WCF вы находитесь в другом мире, посвященном веб-службам, и это лучшая технология в .NET для предоставления служб ( видите ли вы разницу ... Службы ! not Web Services ), WCF не требуется IIS для запуска, он может работать как системная служба на сервере, с использованием консоли окружения (например, командной строки) и т. д., поэтому мы говорим, что WCF является Сервис не веб-сервис. Помните, что ASMX нужен IIS для запуска.

с WCF вы можете использовать SSL для шифрования связи (для этого в ASMX вам нужно использовать WSE - улучшения веб-служб), вы можете отправлять большие файлы и безопасно (для этого в ASMX вы необходимо использовать MTOM - механизм оптимизации передачи сообщений).

Вы можете установить параметры передачи, просто изменив одну строку кода, безопасность намного выше и т. Д., И т. Д.)

надеюсь, вы получите лучший общий обзор с этим, но есть гораздо больше.

Итог: для предоставления веб-служб, которые вам не нужно защищать, вы можете использовать ASMX, без проблем, но если вам нужно как-то защитить связь, сделайте это в WCF!

ссылка : Вы можете прочитать здесь некоторые сравнительные характеристики производительности между двумя службами

9 голосов
/ 20 октября 2008

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

Здесь - обсуждение на форуме MSDN по этой теме. Вот начальные страницы для ASMX и WCF .

7 голосов
/ 20 октября 2008

В дополнение к вышеприведенным ответам был создан WCF для замены .NET Remoting в .NET 3.0 и более поздних версиях. Помимо веб-служб SOAP, REST, POX и т. Д. В различных форматах (например, XML и JSON), WCF также предлагает MSMQ и именованные каналы. ASMX, как упоминалось выше, предоставляет только XML-веб-службы на основе SOAP.

Вам нужно будет углубиться в .NET Remoting для других типов протоколов связи. Для получения дополнительной информации вы должны проверить Pro C # 2008 и .NET 3.5 Framework . Это отличный ресурс, и вы можете получить главы из предыдущих книг, посвященных .NET Remoting, и другим замененным функциям.

4 голосов
/ 18 июля 2009

Вот новая большая разница: Microsoft теперь считает веб-сервисы ASMX «устаревшей» технологией. См. « Веб-службы XML, созданные с использованием клиентов веб-служб ASP.NET и XML ».

2 голосов
/ 15 июня 2010

Веб-сервисы

  1. Доступ к нему возможен только через HTTP
  2. Работает в среде без состояния

WCF

WCF является гибким, поскольку его службы могут размещаться в различных типах приложений. Ниже перечислены несколько распространенных сценариев размещения служб WCF:

  • IIS
  • БЫЛ
  • Самостоятельный хостинг
  • Управляемая служба Windows
1 голос
/ 12 апреля 2014

Основные различия между веб-сервисом и WCF перечислены ниже.

Веб-служба : веб-служба - это приложение, предназначенное для непосредственного взаимодействия с другими приложениями через Интернет.

1) Атрибуты [WebService] и [WebMethod] определяют веб-службу и методы.
2) Доступ к нему возможен только через HTTP.
3) Размещено в IIS.
4) Поддержка служб безопасности.
5) Не может быть многопоточным.
6) Используется только мыло или XML.
7) Пространство имен System.Xml.serialization используется для сериализации

WCF : Windows Communication Foundation (с кодовым названием Indigo) - это программная платформа и система времени выполнения для построения, настройки и развертывания сетевых распределенных служб.

1) Атрибуты [ServiceContract] и [OperationContract] определяют веб-сервис и методы.
2) Доступ через HTTP, TCP, MSMQ, P2P, именованные каналы
3) Размещено в службах IIS, Self-Hosting, WAS и Windows.
4) Может быть многопоточным через класс поведения службы.
5) Пространство имен System.Runtime.Serialization используется для сериализации.
6) Поддерживает различные типы привязок, такие как BasicHttpBinding, WSHttpBinding, WSDualHttpBinding и т. Д.
7) Поддержка служб безопасности, надежного обмена сообщениями, транзакций, поддержки AJAX и REST

1 голос
/ 21 июня 2009

У меня была такая же проблема.

Я нашел книгу Microsoft Windows Communication Foundation Step by Step действительно хорошей.

Если вы просто хотите сделать традиционный веб-сервис с использованием WCF, то глава 1 этой книги покажет вам, как это сделать (написать сервис, протестировать, развернуть, использовать сервис). *

Он написан для VS2005, но я использую vs2008 и нашел его еще проще.

В WCF есть еще много всего, но эта книга - хорошее начало.

1 голос
/ 20 октября 2008

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

Вот краткая ветка об этом http://social.msdn.microsoft.com/Forums/en-US/wcf/thread/2d6a7ff2-f15c-4599-a389-a81cfffcc852/

...