Веб-служба против службы WCF


Ответы:


67

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

Резюме статьи:

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

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

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

... потом ...

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


2
Для любого нового проекта, основанного на подходе SOA, разработчик должен выбрать WCF вместо веб-сервисов. Потому что это дает гибкость и масштабируемость для будущего использования. Есть только одно исключение: если клиент не поддерживает связь со службами wcf, то есть Flash AS2.
— Lalit

WCF 1) Это многоуровневая архитектура. 2) Он предоставляет единую унифицированную платформу (совместимую) или структуру для создания ориентированного на службы приложения для взаимодействия с использованием различных сетевых протоколов. 3) WCF обеспечивает лучшую безопасность и надежность по сравнению с веб-службами или службами ASMX 4) Поддержка простых XML, Ajax и веб-служб REST 1) Это просто 2) Напишите функцию и подключите ее к атрибуту [WebMethod], и это готов оказать услугу
— Арун Баник

Как ответил Джо -> Статья реплицируется на codeproject.com/Articles/139787/…
— Bernhard

33

В чем разница между 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, самостоятельный хостинг, управляемая служба Windows.

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


2
Случайное примечание: большая разница между DataContractSerializer и XmlSerializer заключается в том, что DCS требует упорядочивания полей - вот почему я не использую DCS для непереходной сериализации или контрактов! Таким образом, можно нарушить работу службы, используемой клиентами, не использующими фиксированный порядок при переходе к DCS (или переходе к DCS, но в другом порядке, чем использовался ранее). Конечно, это должно быть выражено в
— схеме

1
Также, пожалуйста, цитируйте / связывайте источники и указывайте выдержки и / или возьмите исходную информацию и напишите с ней что-нибудь новое. Воровать грубо. Я добавил ссылку для вас, но не забудьте указать место, где она должна быть! (Я бы проголосовал против на этом основании, если бы вообще смог.)
— user2246674

32

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

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


WCF также может получать / отправлять HTTP-запросы / ответы в формате JSON и без использования SOAP / схем (в настоящее время?).
— Efrain

Детализация: SOAP поддерживает HTTPS. Кодирование происходит на транспортном уровне, поэтому клиент не зависит от него - клиент делает XML-запросы и получает XML-ответы, и он не знает и не заботится о том, был ли он по пути plain-ol-http или encrypted-https.
— Jinlye 08

16

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


4

В чем разница между веб-службой и 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. Для внутренних вызовов сервис-сервис (за брандмауэром) мы используем привязку net: tcp, которая намного быстрее, чем SOAP.

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

Когда я выберу одно вместо другого?

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

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

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

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


2

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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.