Разница между 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:
|
Хостинг механизм | Службы 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 от веб-сервисов с помощью инфографики и таблицы сравнения. Вы также можете взглянуть на следующие статьи, чтобы узнать больше.
- Сравнение - Ubuntu против Windows 10
- Мобильное приложение против веб-сайтов - полезные сравнения
- Спящий режим против Hibernate-Top Большинство отличий
- Microsoft Azure и Amazon Web Services