Різниця між веб-сервісами OData та REST


196

Переглядаючи деякі веб-сервіси, я натрапив на цю "нову" технологію, яку Microsoft називає OData . Читаючи їх опис у FAQ, що таке OData, я важко відрізняю OData від найповніших веб-сервісів REST. Може хтось, будь ласка, допоможе мені зрозуміти відмінності?


2
Один є виробником, інший сприяє споживачам.
Кангкан

Відповіді:


98

ОНОВЛЕННЯ Попередження, ця відповідь є надзвичайно застарілою тепер, коли доступний OData V4.


Я написав пост на цю тему деякий час тому тут .

За словами Франці, OData базується на Atom Pub. Однак вони наклали деяку функціональність зверху і, на жаль, проігнорували деякі обмеження REST у процесі.

Для можливості запиту служби OData потрібно побудувати URI на основі інформації, яка недоступна або пов'язана у відповіді. Це те, що REST люди називають позадіапазонною інформацією та вводять приховану зв'язок між клієнтом та сервером.

Інше з'єднання, яке вводиться, відбувається за допомогою використання метаданих EDMX для визначення властивостей, що містяться у вмісті запису. Ці метадані можна виявити у фіксованій кінцевій точці, що називається $ метадані. Знову ж таки, клієнт повинен це знати заздалегідь, його неможливо виявити.

На жаль, Microsoft не вважає за потрібне створювати типи медіа для опису цих ключових фрагментів даних, тому будь-який клієнт OData повинен зробити купу припущень щодо послуги, з якою вона спілкується, та даних, які вона отримує.


1
@felickz Вибачте за це. У мене виникли проблеми з DNS. Це має працювати зараз. Або буде, коли термін дії вашого кеш-файлу dns закінчиться.
Даррел Міллер

6
На насправді це є застарілим. V3 з OData додав "JSON Light", який вирішує обидва ці проблеми (які насправді є лише одним), тобто $ метадані - це те, як ви вмієте будувати запити, тому все, що бракувало, - це посилання на $ метадані в представленнях ресурсів. Це було додано, тому обидві проблеми зникають за один раз.
Алекс Джеймс

10
@DarrelMiller Ви згадали, що ваша відповідь застаріла. Хочете додати оновлення зі своєю думкою щодо цієї теми? Мені все одно було б цікаво знати різницю між OData 4 та REST. Велике спасибі
Куррен

2
@Kurren Це в моєму списку справ, але, на жаль, це довгий список.
Даррел Міллер

2
@DarrelMiller Сподіваємось, що ви скоро знайдете час для оновлення публікації, щоб оновити дату з OData V4.
LCJ

64

Протокол OData побудований поверх протоколу AtomPub. Протокол AtomPub - один з найкращих прикладів дизайну API REST. Отже, у певному сенсі ви праві - OData - це лише інший API REST, і кожна реалізація OData є повноцінною веб-службою REST.

Різниця полягає в тому, що OData - це специфічний протокол; REST - це стиль архітектури та дизайн.


Я можу помилитися з цим (щойно почав дізнаватися про одата), але, як і у версії 3 [протоколу] [ odata.org/documentation], з'являється також вказаний формат JSON, який ви можете використовувати альтернативно. Ви можете пролити трохи світла на це?
Йоганнес Рудольф

1
@JohannesRudolph, чесно кажучи, я поняття не маю. Я не дивився на OData протягом останніх двох років. Але цілком ймовірно, що Microsoft додала б підтримку JSON. Зауважте, що це жодним чином не змінює жодних відповідей тут. JSON vs XML - це лише питання презентації ресурсів REST.
Франці Пенов

1
Ви можете вказати в запиті, який формат ви хочете мати. XML та JSON мають підтримувати більшість реалізацій, наприклад, встановлюючи заголовок Accept на application / json (починаючи з OData версії 2)
i000174

32

REST - це загальна техніка дизайну, яка використовується для опису доступу до веб-сервісу. Використовуючи REST, ви можете робити запити http для отримання даних. Якщо ви спробуєте його у своєму браузері, це було б так само, як перейти на веб-сайт, за винятком того, що замість повернення веб-сторінки ви отримаєте назад XML. Деякі служби також повертають дані у форматі JSON, який простіше у використанні з Javascript.

OData - це специфічна технологія, яка відкриває дані через REST.

Якщо ви хочете підсумувати це дуже швидко, подумайте про це як:

  • REST - модель дизайну
  • OData - сприятлива технологія

20

У 2012 році OData пройшов стандартизацію, тому я просто додам тут оновлення ..

Спочатку визначення:

REST - це архітектура того, як надсилати повідомлення через HTTP.

OData V4 - це специфічна реалізація REST, дійсно визначає вміст повідомлень у різних форматах (на даний момент я думаю, що це AtomPub і JSON). ODataV4 дотримується принципів спокою.

Наприклад, користувачі asp.net здебільшого використовуватимуть контролер WebApi для серіалізації / деріаріалізації об'єктів у JSON та змушені JavaScript робити щось із цим. Точка Одати зможе запитувати безпосередньо з URL-адреси за допомогою нестандартних параметрів.


10

З документації OData :

Протокол OData - це протокол рівня додатків для взаємодії з даними через веб-сервіси RESTful.

...

Протокол OData відрізняється від інших підходів до веб-служб на базі REST тим, що він забезпечує єдиний спосіб опису даних і моделі даних.


4

OData (Open Data Protocol) - стандарт OASIS, який визначає кращі практики створення та використання RESTful API. OData допомагає вам зосередитись на вашій бізнес-логіці, будуючи API RESTful, не турбуючись про підходи до визначення заголовків запитів і відповідей, кодів статусу, методів HTTP, конвенцій URL-адрес, типів медіа, форматів навантаження та варіантів запитів тощо. OData також керує вами щодо відстеження змін, визначення функцій / дій для процедур багаторазового використання та надсилання асинхронних / пакетних запитів тощо. Крім того, OData забезпечує можливість розширення для задоволення будь-яких спеціальних потреб ваших RESTful API.

ODAta RESTful API легко споживати. Метадані OData, машиночитаний опис моделі даних API, дозволяє створити потужні загальні клієнтські проксі та інструменти. Деякі з них можуть допомогти вам взаємодіяти з OData навіть не знаючи нічого про протокол. Наступні 6 кроків демонструють 6 цікавих сценаріїв споживання OData на різних платформах програмування. Але якщо ви не розробник і хочете просто грати з OData, XOData - найкращий старт для вас.

Детальніше на http://www.odata.org/


4

ODATA - це особливий вид REST, де ми можемо рівномірно запитувати дані за URL-адресою.


2

REST позначає RE презентаційний S tate T ransfer, який є ресурсним архітектурним стилем. На основі ресурсів означає, що дані та функції розглядаються як ресурси.

OData - це веб-протокол, який визначає набір найкращих практик побудови та використання RESTful веб-служб. OData - це спосіб створити RESTful веб-сервіси, таким чином, реалізацію REST.

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