Веб-служба против службы 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.