Відповіді:
Ця відповідь заснована на статті, якої більше немає:
Короткий зміст статті:
"В основному WCF - це сервісний рівень, який дозволяє створювати додатки, які можуть спілкуватися, використовуючи різні механізми зв'язку. З ним можна спілкуватися за допомогою Peer to Peer, Named Pipes, Web Services тощо.
Ви не можете їх порівняти, оскільки WCF є основою для створення сумісних додатків. Якщо вам подобається, ви можете думати про це як засіб SOA. Що це означає?
Ну, WCF відповідає чомусь відомому як ABC, де A - адреса послуги, з якою ви хочете спілкуватися, B - посилання на обов'язковість, а C - контракт. Це важливо, оскільки можливо змінити прив'язку, не обов'язково змінюючи код. Контракт набагато потужніший, оскільки він змушує відокремити договір від виконання. Це означає, що договір визначений в інтерфейсі, і існує конкретна реалізація, яка пов'язана споживачем з використанням тієї ж ідеї договору. Модель даних абстрагується. "
... пізніше ...
"слід використовувати WCF, коли нам потрібно спілкуватися з іншими комунікаційними технологіями (наприклад, з" Peer to Peer, Named Pipes "), а не з веб-сервісом"
Від чого різниця між 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, Named Pipes, 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.
Коли я б обрав одну над іншою?
WCF використовується для спілкування між іншими програмами, розробленими на інших платформах, та використанням інших технологій.
Наприклад, якщо мені доведеться перенести дані з платформи .net в інший додаток, який працює в іншій ОС (наприклад, Unix або Linux), і вони використовують інший протокол передачі (наприклад, WAS або TCP), тоді можна передавати дані лише використовуючи WCF.
Тут немає обмеження платформи, протоколу передачі програми при передачі даних між однією програмою в іншу програму.
Захищеність дуже висока порівняно з веб-сервісом
Основна відмінність полягає в тайм-ауті, служба WCF закінчилася, коли відповіді немає, але веб-сервіс не має цієї властивості.