Разница между WCF и веб-сервисами

WCF является заменой всех более ранних технологий веб-сервисов. Это разработано Microsoft. Он заменяет то, что традиционно считается «веб-сервисами». Веб-сервис основан на SOAP, который возвращает данные в форме XML. Он просто поддерживает протокол HTTP. Он также не является открытым исходным кодом и может использоваться любым клиентом, который понимает XML. Он может быть размещен только в IIS.

Что такое WCF?

WCF основан на SOAP и возвращает данные в форме XML. Это расширение веб-службы (ASMX) и поддерживает различные протоколы, такие как HTTP, HTTPS, TCP, Named Pipes, MSMQ и т. Д. WCF имеет проблемы с его утомительной и обширной конфигурацией. Это не открытый код, но может использоваться любым клиентом, который понимает XML. Он может быть размещен на нескольких платформах, как в приложении, так и на IIS или с помощью службы Windows.

В каких сценариях должен использоваться WCF?

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

Что такое веб-сервис?

Как обсуждалось выше, веб-службы работают в среде без состояния. Доступ к нему возможен только через HTTP. Услуги WCF могут быть размещены в различных типах приложений. Поэтому, в отличие от веб-служб, WCF более гибок.

WCF может быть размещен в различных сценариях. К таким сценариям относятся такие службы, как WAS, IIS, Self-хостинг, управляемая служба Windows и т. Д.

Сравнение лицом к лицу между WCF и веб-сервисами (инфографика)

Ниже представлено 9 лучших отличий WCF от веб-сервисов.

Ключевые различия между WCF и веб-сервисами

Оба WCF против веб-сервисов являются популярным выбором на рынке; давайте обсудим некоторые основные различия между WCF и веб-сервисами

  • При передаче данных из одного приложения в другое приложение веб-служба использует только протокол HTTP. С другой стороны, для транспортировки данных WCF поддерживает больше протоколов по сравнению с веб-службами ASP.NET. Помимо отправки сообщений с использованием HTTP, WCF также поддерживает протокол управления передачей (TCP), очередь сообщений Microsoft (MSMQ) и именованные каналы.
  • WCF архитектурно более надежен, чем веб-сервис.
  • XmlSerializer используется в веб-сервисах. WCF использует DataContractSerializer, который лучше по сравнению с XmlSerializer с точки зрения производительности.
  • При обмене данными между несколькими приложениями, разработанными на разных платформах, мы используем WCF. Использование WCF является единственно возможным для передачи данных в случае, если мы переносим данные с платформы .NET в любое другое приложение, работающее в других операционных системах, таких как Unix или Linux.
  • Безопасность в WCF очень высока по сравнению с веб-сервисом.

Сравнительная таблица WCF и веб-сервисов

Ниже приведено 9 лучших сравнений между WCF и веб-сервисами.

Основа сравнения между WCF и веб-сервисами

WCF

Веб-сервисы

Ознакомительная версияСлужба WCF появилась в .NET версии 3.0.Веб-сервис существует в .net Framework начиная с версии 1.0.
Протокол для приема и отправки сообщенийСлужбы WCF по умолчанию используют SOAP, но сообщения могут быть в любом формате и передаваться с использованием любого транспортного протокола, такого как WS-HTTP, TCP, Именованные каналы, HTTP, HTTP, MSMQ, P2P (точка-точка) и т. Д.Веб-службы ASP.NET могут отправлять и получать сообщения с использованием SOAP только по протоколу HTTP или HTTPS.
Расширение файлаСервисы Wcf имеют расширение «.svc».Веб-сервисы имеют расширение «.asmx»
директиваСтраница svc использует директиву ServiceHost.Страница asmx использует директиву WebService
Техника сериализацииОн использует DataContractSerializer в пространстве имен System.RunTime.Serialization для сериализации.Для сериализации веб-службы ASP.NET основаны на XmlSerializer в пространстве имен System.XML.Serialization. Некоторые из ограничений XmlSerializer:

  • Возможность сериализации открытых свойств / полей.
  • Сериализация возможна только для классов коллекции, реализующих Icollection или IEnumerable.
  • Сериализация невозможна для классов, реализующих IDictionary, например, HashTable.
  • Явное указание полей или свойств, которые должны быть сериализованы в XML, и определение полей, которые должны игнорироваться сериализатором, невозможно.

Хостинг механизмСлужбы WCF могут быть размещены на нескольких платформах, таких как IIS, службы активации Windows (WAS), управляемые службы Windows или автономный хостинг и т. Д.Веб-сервис ASP.net может быть размещен только в IIS.
необработанная обработка исключенийНеобработанные исключения не возвращаются клиентам как ошибки SOAP.Необработанные исключения возвращаются клиентам как ошибки SOAP в веб-службах ASP.NET.
Поддержка многопоточностиМногопоточность поддерживается службами WCF.В веб-сервисах нет поддержки многопоточности.
ПроизводительностьWCF быстрее по сравнению с веб-сервисамиПоскольку веб-сервисы используют сериализаторы, следовательно, они медленнее, чем сервисы WCF, с точки зрения производительности.

Пример WCF против веб-сервисов

Ниже приведены примеры WCF и веб-сервисов:

Веб-сервисы

Следующий фрагмент кода показывает нам, как разработать сервис в веб-сервисе.

(WebService) public class MyService
(
(WebMethod) public SumClass SumOfNums(string JsonStr)
(
var ObjSerializer = new JavaScriptSerializer();
var ObjSumClass = ObjSerializer.Deserialize(JsonStr);
return new SumClass().GetSumClass(ObjSumClass.First, ObjSumClass.Second);
)
)
public class SumClass
(
public int First, Second, Sum;
public SumClass GetSumClass(int Num1, int Num2)
(
var ObjSum = new SumClass
(
Sum = Num1 + Num2,
);
return ObjSum;
)
)

WCF

Следующий фрагмент кода показывает нам, как разработать сервис в WCF

ServiceContract) blic class MyService : WebService
(
(OperationContract) public SumClass SumOfNums(string JsonStr)
(
var ObjSerializer = new JavaScriptSerializer();
var ObjSumClass = ObjSerializer.Deserialize(JsonStr);
return new SumClass().GetSumClass(ObjSumClass.First, ObjSumClass.Second);
)
)
(DataContract) public class SumClass
(
(DataMember) public int First;
(DataMember) public int Second;
(DataMember) public int Sum;
public SumClass GetSumClass(int Num1, int Num2)
(
var ObjSum = new SumClass
(
Sum = Num1 + Num2,
);
return ObjSum;
)
)

Заключение - WCF против веб-сервисов

Из приведенного выше обсуждения WCF-сервис определенно является передовой технологией этого веб-сервиса. WCF быстрее, чем веб-сервис с точки зрения производительности. WCF обеспечивает лучшую безопасность, поддерживает различные протоколы, а также форматы сообщений. Единственная беспокойная область WCF для разработчиков - это часть конфигурации. Однако эта проблема также была решена с помощью WCF4.0 путем введения параметров конфигурации по умолчанию. Замечено, что до .NET3.5 визуальная студия предоставляет прямой шаблон для веб-сервиса. Начиная с .NET4.0 мы не получаем никаких прямых шаблонов для веб-службы. Следовательно, нам нужно создать веб-приложение и добавить к нему веб-сервис.

Рекомендуемые статьи

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

  1. Сравнение - Ubuntu против Windows 10
  2. Мобильное приложение против веб-сайтов - полезные сравнения
  3. Спящий режим против Hibernate-Top Большинство отличий
  4. Microsoft Azure и Amazon Web Services