Чому я відповідаю:
Мені знадобилося величезна кількість часу, щоб зрозуміти різницю між цими двома технологіями. Я поставлю сюди всі ті пункти, які, на мою думку, "якби у мене були ці моменти в той час, коли я цікавився в пошуках цієї відповіді, то я вирішив дуже рано у виборі потрібної технології".
Джерело інформації:
Microsoft® Visual Studio® 2015 Unleashed
ISBN-13: 978-0-672-33736-9 ISBN-10: 0-672-33736-3
Чому ASP.NET Web API та WCF:
Перш ніж порівнювати технології ASP.NET Web API та WCF, важливо зрозуміти, що насправді існує два стилі / стандарти для створення веб-служб: REST (Представницький стан передачі) та SOAP / WSDL. SOAP / WSDL був оригінальним стандартом, на якому будувались веб-сервіси. Однак це було важко у використанні та мали об'ємні формати повідомлень (як XML), які погіршували продуктивність. Послуги на основі REST швидко стали альтернативою. Їх простіше писати, оскільки вони використовують основні конструкції HTTP (GET, POST, PUT, DELETE) і зазвичай використовують менші формати повідомлень (наприклад, JSON). Як результат, сервіси HTTP на основі REST тепер є стандартом для письмових сервісів, які суворо орієнтовані на Інтернет.
Давайте визначимо мету веб-API ASP.NET
ASP.NET Web API - це технологія Microsoft для розробки веб-сервісів HTTP на основі REST. (Він давно замінив Microsoft ASMX, який базувався на SOAP / WSDL.) Веб-API дозволяє легко писати надійні сервіси на основі протоколів HTTP, які розуміють усі браузери та натільні пристрої. Це дає змогу створювати служби для підтримки вашої програми та викликати їх з інших веб-додатків, планшетів, мобільних телефонів, ПК та ігрових консолей. Більшість додатків, написаних сьогодні для використання постійно існуючого веб-з'єднання, певним чином використовують сервіси HTTP.
Давайте тепер визначимо призначення WCF:
Спілкування через Інтернет - це не завжди найефективніший засіб. Наприклад, якщо і клієнт, і служба існують на одній і тій же технології (або навіть на одній машині), вони часто можуть домовитись про більш ефективний спосіб спілкування (наприклад, TCP / IP). Розробники сервісів виявили той самий вибір, якого намагалися уникати. Тепер їм доведеться вибирати між створенням ефективних внутрішніх служб та можливістю широкого доступу, знайденого через Інтернет. І, якщо їм доведеться підтримувати обидва, їм, можливо, доведеться створити кілька версій своєї служби або принаймні окремі проксі для доступу до їх служби. Це проблема, яку Microsoft вирішила з WCF .
За допомогою WCF ви можете створити свою послугу, не турбуючись про межі. Тоді ви можете дозволити WCF турбуватися про запуск вашої послуги найбільш ефективно, залежно від клієнта, який телефонує. Для управління цим завданням WCF використовує концепцію кінцевих точок. У вашій службі може бути кілька кінцевих точок (налаштовано під час розробки або після розгортання). Кожна кінцева точка вказує, як сервіс може підтримувати клієнта, що телефонує: через Інтернет, шляхом видалення, через чергування повідомлень Microsoft (MSMQ) тощо. WCF дозволяє вам зосередитись на створенні функціональних можливостей вашого сервісу. Турбує питання про те, як найефективніше розмовляти з клієнтами, які телефонують. Таким чином, одна послуга WCF може ефективно підтримувати різні типи клієнтів.
Приклад WCF:
Розглянемо приклад:
Дані замовника поділяються між додатками. Кожна програма може бути написана на іншій платформі, і вона може існувати в іншому місці. Ви можете отримати інтерфейс клієнта в службі WCF, яка забезпечує загальний доступ до спільних даних клієнтів. Це централізує дані, зменшує дублювання, виключає синхронізацію та спрощує управління. Крім того, використовуючи WCF, ви можете налаштувати кінцеві точки служби так, щоб вони мали сенс для клієнта, що телефонує. На малюнку показаний приклад раніше з централізованим доступом до даних клієнтів у службі WCF.
Висновок:
i) Коли вибрати веб-API:
Не можна заперечувати, що HTTP-сервіси на основі REST, такі як створені за допомогою веб-API ASP.NET, стали стандартом для створення веб-служб. Ці сервіси пропонують простий і простий підхід для створення веб-розробників. Веб-розробники розуміють HTTP GET та POST і тому добре адаптуються до цих типів послуг. Тому, якщо ви пишете сервіси, чітко орієнтовані на HTTP , ASP.NET Web API - це логічний вибір.
ii) Коли вибрати WCF:
Технологія WCF корисна, коли вам потрібно підтримувати декілька кінцевих точок обслуговування на основі різних протоколів та форматів повідомлень. Такі продукти, як Microsoft BizTalk, використовують WCF для створення надійних сервісів, які також можна використовувати в Інтернеті через різні конфігурації "машина-машина". Якщо, однак, вам потрібно написати програму, яка спілкується через TCP / IP, коли підключена до локальної мережі мережа та працює через HTTP, коли поза мережею WCF - це ваша відповідь .
Будьте попереджені:
Веб-розробники часто розглядають WCF як складніший і складніший для розробки. Тому, якщо ви не передбачаєте потреби в мультипротокольних послугах, ви, ймовірно, будете дотримуватися веб-API ASP.NET.