Веб-сервіс vs Сервіс WCF


Відповіді:


67

Ця відповідь заснована на статті, якої більше немає:

Короткий зміст статті:

"В основному WCF - це сервісний рівень, який дозволяє створювати додатки, які можуть спілкуватися, використовуючи різні механізми зв'язку. З ним можна спілкуватися за допомогою Peer to Peer, Named Pipes, Web Services тощо.

Ви не можете їх порівняти, оскільки WCF є основою для створення сумісних додатків. Якщо вам подобається, ви можете думати про це як засіб SOA. Що це означає?

Ну, WCF відповідає чомусь відомому як ABC, де A - адреса послуги, з якою ви хочете спілкуватися, B - посилання на обов'язковість, а C - контракт. Це важливо, оскільки можливо змінити прив'язку, не обов'язково змінюючи код. Контракт набагато потужніший, оскільки він змушує відокремити договір від виконання. Це означає, що договір визначений в інтерфейсі, і існує конкретна реалізація, яка пов'язана споживачем з використанням тієї ж ідеї договору. Модель даних абстрагується. "

... пізніше ...

"слід використовувати WCF, коли нам потрібно спілкуватися з іншими комунікаційними технологіями (наприклад, з" Peer to Peer, Named Pipes "), а не з веб-сервісом"


2
Для будь-якого нового проекту, заснованого на підході SOA, розробник повинен вибрати WCF через веб-сервіси. Тому що це дає гнучкість та масштабованість для подальшого використання. Є лише один виняток: якщо клієнт не підтримує зв’язок із послугами wcf, тобто Flash AS2.
Лаліт

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

Як відповів Джо -> Стаття повторена на codeproject.com/Articles/139787/…
Бернхард

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, але в іншому порядку, ніж раніше). Зрозуміло, це має бути виражено у Схемі, але ..
user2246674

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

32

Веб-сервіс базується на SOAP та повертає дані у XML-формі. Він підтримує лише протокол HTTP. Він не є відкритим кодом, але його може споживати будь-який клієнт, який розуміє xml. Його можна розмістити лише на IIS.

WCF також базується на SOAP та повертає дані у формі XML. Це еволюція веб-сервісу (ASMX) та підтримка різних протоколів, таких як TCP, HTTP, HTTPS, Named Pipes, MSMQ. Головною проблемою WCF є його копітка та обширна конфігурація. Він не є відкритим кодом, але його може споживати будь-який клієнт, який розуміє xml. Він може розміщуватися в додатку або на IIS або за допомогою віконної служби.


WCF також може приймати / відправляти http-запит / відповіді у форматі JSON і без використання SOAP / схем (в наш час?).
Efrain

Деталізація: SOAP підтримує HTTPS. Кодування відбувається на транспортному шарі, тому клієнт агресивно ставиться до нього - клієнт робить XML-запити та отримує XML-відповіді, і він ні знає, ні хвилює, чи був він простий-ol-http чи зашифрований-https.
Jinlye

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.

Коли я б обрав одну над іншою?

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

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

  • Тут немає обмеження платформи, протоколу передачі програми при передачі даних між однією програмою в іншу програму.

  • Захищеність дуже висока порівняно з веб-сервісом


2

Основна відмінність полягає в тайм-ауті, служба WCF закінчилася, коли відповіді немає, але веб-сервіс не має цієї властивості.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.