Веб-служба против службы WCF - PullRequest
106 голосов
/ 09 декабря 2008

В чем разница между ними?

Когда я выберу одно из другого?

Ответы [ 6 ]

63 голосов
/ 09 декабря 2008

Этот ответ основан на статье, которой больше не существует:

Краткое содержание статьи:

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

Вы не можете сравнивать их, потому что WCF - это платформа для создания совместимых приложений. Если вам нравится, вы можете думать об этом как о активаторе SOA. Что это значит?

Ну, WCF соответствует чему-то, известному как ABC, где A - это адрес службы, с которой вы хотите установить связь, B - это привязка, а C - контракт. Это важно, потому что можно изменить привязку без необходимости изменения кода. Контракт гораздо более мощный, потому что он заставляет отделить контракт от реализации. Это означает, что контракт определен в интерфейсе, и есть конкретная реализация, к которой привязан потребитель, использующий ту же идею контракта. Модель данных удалена. "

... позже ...

"должен использовать WCF, когда нам нужно взаимодействовать с другими коммуникационными технологиями (например, .g. Peer to Peer, именованные каналы), а не с веб-службой"

30 голосов
/ 17 декабря 2012

От В чем разница между WCF и веб-службами?

WCF является заменой всех более ранних технологий веб-служб от Microsoft. Это также намного больше, чем то, что традиционно считается «веб-сервисами».

«Веб-службы» WCF являются частью гораздо более широкого спектра удаленной связи, включаемой через WCF. Вы получите гораздо более высокую степень гибкости и мобильности при работе в WCF, чем при использовании традиционного ASMX, поскольку WCF с самого начала предназначен для суммирования всех различных инфраструктур распределенного программирования, предлагаемых Microsoft. С конечной точкой в ​​WCF можно связываться так же легко через SOAP / XML, как и через TCP / двоичный, и изменить этот носитель - просто мод конфигурационного файла. Теоретически это уменьшает количество нового кода, необходимого при переносе или изменении бизнес-потребностей, целей и т. Д.

ASMX старше WCF, и все, что ASMX может сделать, может WCF (и более). По сути, вы можете видеть, что WCF пытается логически объединить все различные способы взаимодействия двух приложений в мире Microsoft; ASMX был только одним из этих многочисленных способов, и теперь он сгруппирован под зонтиком возможностей WCF.

Доступ к веб-службам возможен только через HTTP, и он работает в среде без состояний, где WCF является гибким, поскольку его службы могут размещаться в различных типах приложений. Распространенными сценариями размещения служб WCF являются IIS, WAS, Self-hosting, Managed Windows Service.

Основное отличие заключается в том, что веб-службы используют XmlSerializer. Но WCF использует DataContractSerializer, что лучше по производительности по сравнению с XmlSerializer.

29 голосов
/ 12 августа 2014

Веб-сервис основан на SOAP и возвращает данные в форме XML. Поддерживается только протокол HTTP. Это не открытый код, но может использоваться любым клиентом, который понимает XML. Он может быть размещен только на IIS.

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

15 голосов
/ 26 августа 2012

Основное и основное отличие состоит в том, что веб-служба ASP.NET предназначена для обмена сообщениями SOAP только по HTTP, а служба WCF может обмениваться сообщениями в любом формате (по умолчанию SOAP) по любому транспортному протоколу, например, HTTP, TCP, MSMQ или NamedPipes и т. Д. .

4 голосов
/ 16 апреля 2018

В чем разница между веб-сервисом и WCF?

  1. Веб-служба использует только протокол HTTP при передаче данных из одного приложения в другое приложение.

    Но WCF поддерживает больше протоколов для передачи сообщений, чем веб-службы ASP.NET. WCF поддерживает отправку сообщений с использованием HTTP, а также протокола управления передачей (TCP), именованных каналов и очереди сообщений Microsoft (MSMQ).

  2. Для разработки сервиса в веб-сервисе мы напишем следующий код

    [WebService] public class Service : System.Web.Services.WebService { [WebMethod] public string Test(string strMsg) { return strMsg; } }

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

    [ServiceContract] public interface ITest { [OperationContract] string ShowMessage(string strMsg); } public class Service : ITest { public string ShowMessage(string strMsg) { return strMsg; } }

  3. Веб-сервис не является архитектурно более устойчивым. Но WCF архитектурно более надежный и продвигает лучшие практики.

  4. Веб-службы используют XmlSerializer, но WCF использует DataContractSerializer. Который лучше по производительности по сравнению с XmlSerializer?

  5. Для внутренних (за брандмауэром) сервисных вызовов мы используем сеть: tcp привязка, которая намного быстрее, чем SOAP.

    WCF на 25% - на 50% быстрее, чем веб-службы ASP.NET, и примерно на 25% быстрее, чем .NET Remoting.

Когда я выберу одно из другого?

  • WCF используется для связи между другими приложениями, которые были разработаны на других платформах и с использованием других технологий.

    Например, если мне нужно перенести данные с платформы .net в другое приложение, работающее в другой ОС (например, Unix или Linux), и они используют другой протокол передачи (например, WAS или TCP), тогда это возможно для передачи данных с использованием WCF.

  • Здесь нет ограничений платформы, протокола передачи приложения при передаче данных между одним приложением в другое приложение.

  • Безопасность очень высока по сравнению с веб-сервисом

1 голос
/ 08 февраля 2016

Основным отличием является время ожидания, служба WCF имеет время ожидания, когда нет ответа, но веб-служба не имеет этого свойства.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...