Веб-API скоріше використовує протокол http. Odata - це відкритий стандарт, який охоплює багато великих гравців. Я можу говорити лише зі свого досвіду, коли я бавляюся з Одатою, і нещодавно відкрив для себе веб-API та провів деякі дослідження.
OData крута, тому що це фактичний стандарт. Ви можете легко створити базу даних і експонувати її через HTTP. Це означає, що ви можете переміщати структуру таблиці без будь-якої конфігурації (я кажу, що це вільно). Ви також можете запускати запити за URL-адресою, яка може містити легкий LINQ:
/products/orders/[put some linq-ish query here]
Це, мабуть, добре чи погано. Аутентифікація є стандартною і її побудували.
Веб-API, цікавіше з моєї точки зору. Він використовував функцію HTTP (повідомлення про помилки та ін.) І є трохи «ріднішим» для справжніх RESTful запитів. Я справді не надто грав з цим .. Але я читав навколо і свого роду "чув", що MVC та Web API можуть "одружитися" якийсь день, знову ж таки, може, добре, може, й погано ...
Коли я грав з OData, я створив Stored Proc, вклав його в поверхню сутності, налаштував міцний тип повернення, а потім підключив його до URL-запиту та BANG, є мій запит RESTful, відображений у моєму типізованому результаті, збереженому proc. Це було досить просто, і я зміг отримати саме те, що мені потрібно.
На
закінчення у мене не було можливості грати з WCF API занадто багато деталей, але я б сказав, що це шлях для розвитку клієнтів, оскільки це більше пуристичний підхід до REST. Якщо ви будете здійснювати більш-менш "прямі" дзвінки вперед-назад та отримувати "Перегляд моделей", це забезпечить більш рідну взаємодію.
З іншого боку. Якщо ви будете робити складні (ish) запити на основі даних, що базуються на взаємодії з клієнтом, і ви хочете "побудувати" логіку запиту і передати її як параметр, тоді Odata може працювати.
Те, як я дивлюся на це, якщо мені потрібно виставити свої дані у структурному форматі (мається на увазі таблиця / структура відносин), а потім запитувати їх безпосередньо у клієнта, тоді Odata буде працювати найкраще. Це також добре для дозволу "Іншим" отримувати доступ до даних (з належним auth і т. Д.), Тому він дотримується протоколу OData
Якщо ви хочете RESTful запити, коли ви диктуєте URL (/ товари / замовлення / 22 та створюєте складні "набори результатів" зі свого "прихованого" керованого коду та структури даних. І ви також можете скористатися повідомленнями HTTP-відповідей, тоді Веб-API, мабуть, найкращий варіант ..
знову ж таки, це все від досліджень та ігор. Я не реалізовувався ні в сценарії виробництва, ні в повному обсязі. Я думаю, що у них будуть і свої сильні, і слабкі сторони, і певне перекриття напевно є