Веб-служба и служба WCF - программирование

Веб-служба и служба WCF

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

Когда я буду выбирать один за другим?

4b9b3361

Ответ 1

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

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

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

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

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

... позже...

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

Ответ 2

От Какая разница между WCF и веб-сервисами?

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

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

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

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

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

Ответ 3

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

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

Ответ 4

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

Ответ 5

В чем разница между веб-сервисом и 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.

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

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

Ответ 6

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