В чем разница между ними?
Когда я выберу одно вместо другого?
В чем разница между ними?
Когда я выберу одно вместо другого?
Ответы:
Этот ответ основан на статье, которой больше не существует:
Резюме статьи:
«По сути, WCF - это уровень службы, который позволяет создавать приложения, которые могут обмениваться данными с использованием различных механизмов связи. С его помощью вы можете обмениваться данными с помощью одноранговой сети, именованных каналов, веб-служб и т. Д.
Вы не можете сравнивать их, потому что WCF - это платформа для создания совместимых приложений. Если хотите, можете думать об этом как об активе SOA. Что это значит?
Что ж, WCF соответствует так называемому ABC, где A - это адрес службы, с которой вы хотите общаться, B - это привязка, а C - контракт. Это важно, потому что можно изменить привязку без обязательного изменения кода. Контракт намного мощнее, потому что он заставляет отделить контракт от реализации. Это означает, что контракт определяется в интерфейсе, и есть конкретная реализация, к которой привязан потребитель, использующий ту же идею контракта. Модель данных абстрагируется ".
... потом ...
"следует использовать WCF, когда нам нужно взаимодействовать с другими коммуникационными технологиями (например, одноранговые сети, именованные каналы), а не с веб-службой"
В чем разница между 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
.
Веб-сервис основан на протоколе SOAP и возвращает данные в XML-форме. Он поддерживает только протокол HTTP. Это не открытый исходный код, но может использоваться любым клиентом, который понимает xml. Он может быть размещен только на IIS.
WCF также основан на SOAP и возвращает данные в форме XML. Это эволюция веб-службы (ASMX), которая поддерживает различные протоколы, такие как TCP, HTTP, HTTPS, именованные каналы, MSMQ. Основная проблема WCF - это утомительная и обширная конфигурация. Это не открытый исходный код, но может использоваться любым клиентом, который понимает xml. Его можно разместить в приложении, в IIS или с помощью оконной службы.
Основное и основное отличие заключается в том, что веб-служба ASP.NET предназначена для обмена сообщениями SOAP только через HTTP, в то время как служба WCF может обмениваться сообщениями в любом формате (по умолчанию SOAP) по любому транспортному протоколу, например HTTP, TCP, MSMQ или NamedPipes и т. Д.
В чем разница между веб-службой и WCF?
Веб-сервисы используют только протокол HTTP при передаче данных из одного приложения в другое.
Но WCF поддерживает больше протоколов для передачи сообщений, чем веб-службы ASP.NET. WCF поддерживает отправку сообщений с помощью HTTP, а также протокола управления передачей (TCP), именованных каналов и очереди сообщений Microsoft (MSMQ).
Чтобы разработать сервис в веб-сервисе, мы напишем следующий код
[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;
}
}
Веб-сервис не является более надежным в архитектурном отношении. Но WCF архитектурно более надежен и продвигает передовые методы.
Веб-службы используют XmlSerializer, но WCF использует DataContractSerializer. Что лучше по производительности по сравнению с XmlSerializer?
Для внутренних вызовов сервис-сервис (за брандмауэром) мы используем привязку net: tcp, которая намного быстрее, чем SOAP.
WCF на 25-50% быстрее, чем веб-службы ASP.NET, и примерно на 25% быстрее, чем .NET Remoting.
Когда я выберу одно вместо другого?
WCF используется для связи между другими приложениями, которые были разработаны на других платформах и с использованием других технологий.
Например, если мне нужно передать данные с платформы .net в другое приложение, работающее в другой ОС (например, Unix или Linux), и они используют другой протокол передачи (например, WAS или TCP), тогда можно передавать только данные. с использованием WCF.
Здесь нет ограничений платформы, протокола передачи приложения при передаче данных между одним приложением в другое приложение.
Безопасность очень высока по сравнению с веб-сервисом
Основное различие заключается в тайм-ауте, служба WCF имеет тайм-аут, когда нет ответа, но веб-служба не имеет этого свойства.