Różnica między usługami OData i REST


196

Przeglądając niektóre usługi sieciowe, natknąłem się na tę „nową” technologię, którą Microsoft nazywa OData . Czytając ich opis w FAQ na temat tego, czym jest OData, trudno mi odróżnić OData od usług sieciowych REST. Czy ktoś mógłby mi pomóc zrozumieć różnice?


2
Jeden to producent, drugi umożliwia konsumentom.
Kangkan

Odpowiedzi:


98

AKTUALIZACJA Ostrzeżenie, ta odpowiedź jest bardzo nieaktualna, gdy OData V4 jest dostępna.


Napisałem post na ten temat jakiś czas temu tutaj .

Jak powiedział Franci, OData opiera się na Atom Pub. Jednak nałożyli na siebie pewne funkcje i niestety zignorowali niektóre ograniczenia REST w tym procesie.

Możliwość wysyłania zapytań przez usługę OData wymaga konstruowania identyfikatorów URI na podstawie informacji, które nie są dostępne lub z którymi łączy się odpowiedź. To jest to, co ludzie REST nazywają informacjami pozapasmowymi i wprowadzają ukryte sprzężenie między klientem a serwerem.

Drugim wprowadzonym sprzężeniem jest użycie metadanych EDMX do zdefiniowania właściwości zawartych w treści wpisu. Te metadane można odkryć w stałym punkcie końcowym o nazwie $ metadane. Znowu klient musi to wiedzieć z góry, nie można tego wykryć.

Niestety, Microsoft nie uznał za stosowne tworzyć typów mediów do opisania tych kluczowych elementów danych, więc każdy klient OData musi poczynić pewne założenia dotyczące usługi, z którą rozmawia i danych, które otrzymuje.


1
@felickz Przepraszamy za to. Miałem problemy z DNS. Powinno już działać. Lub będzie, gdy wygasnie pamięć podręczna dns.
Darrel Miller

6
W rzeczywistości jest to nieaktualne. Wersja V OData dodała „JSON Light”, który rozwiązuje oba te problemy (które są tak naprawdę tylko jednym), tzn. $ Metadane to sposób tworzenia zapytań, więc brakowało tylko linku do metadanych $ w reprezentacjach zasobów. To zostało dodane, więc oba problemy znikają za jednym razem.
Alex James

10
@DarrelMiller Wspomniałeś, że Twoja odpowiedź jest nieaktualna. Chcesz dodać aktualizację ze swoją opinią na ten temat? Nadal byłbym zainteresowany poznaniem różnicy między OData 4 a REST. Wielkie dzięki
Kurren,

2
@Krenren Jest na mojej liście rzeczy do zrobienia, ale niestety jest to długa lista.
Darrel Miller

2
@DarrelMiller Mam nadzieję, że wkrótce znajdziesz czas na aktualizację postu, aby zaktualizować go za pomocą OData V4.
LCJ

64

Protokół OData jest oparty na protokole AtomPub. Protokół AtomPub jest jednym z najlepszych przykładów projektowania interfejsu API REST. W pewnym sensie masz rację - OData to po prostu kolejny interfejs API REST, a każda implementacja OData jest usługą internetową REST.

Różnica polega na tym, że OData jest specyficznym protokołem; REST to styl architektury i wzór projektowy.


Mogę się mylić (dopiero zacząłem uczyć się o odata), ale od wersji 3 [protokołu] [ odata.org/documentation] wydaje się, że istnieje również określony format JSON, którego można użyć alternatywnie. Czy możesz rzucić na to trochę światła?
Johannes Rudolph

1
@JohannesRudolph, szczerze mówiąc nie mam pojęcia. Nie patrzyłem na ODatę przez ostatnie dwa lata. Ale jest całkiem prawdopodobne, że Microsoft dodałby obsługę JSON. Pamiętaj jednak, że nie zmienia to w żaden sposób żadnej z odpowiedzi tutaj. JSON vs XML to tylko kwestia prezentacji zasobów REST.
Franci Penov

1
W żądaniu możesz określić, jaki format chcesz mieć. XML i JSON powinny być obsługiwane przez większość implementacji, np. Ustawiając nagłówek Accept na application / json (począwszy od wersji OData 2)
i000174

31

REST jest ogólną techniką projektowania używaną do opisania sposobu dostępu do usługi internetowej. Za pomocą usługi REST można wysyłać żądania HTTP w celu uzyskania danych. Jeśli wypróbujesz to w przeglądarce, będzie to tak samo, jak przejście do strony internetowej, z wyjątkiem tego, że zamiast zwracać stronę, otrzymasz XML. Niektóre usługi zwracają również dane w formacie JSON, który jest łatwiejszy w użyciu w Javascript.

OData to specyficzna technologia, która udostępnia dane za pośrednictwem REST.

Jeśli chcesz to podsumować naprawdę szybko, pomyśl o tym jako:

  • REST - wzór projektowy
  • OData - technologia umożliwiająca

20

W 2012 OData została poddana standaryzacji, więc dodam tutaj aktualizację ..

Najpierw definicje:

REST - to architektura wysyłania wiadomości przez HTTP.

OData V4 - jest specyficzną implementacją REST, naprawdę definiuje treść wiadomości w różnych formatach (obecnie myślę, że to AtomPub i JSON). ODataV4 przestrzega zasad odpoczynku.

Na przykład ludzie asp.net będą głównie używać kontrolera WebApi do serializacji / deserializacji obiektów do JSON i niech javascript coś z tym zrobi. Punktem Odata jest możliwość wysyłania zapytań bezpośrednio z adresu URL za pomocą gotowych opcji.


10

Z dokumentacji OData :

Protokół OData to protokół na poziomie aplikacji do interakcji z danymi za pośrednictwem usług sieciowych RESTful.

...

Protokół OData różni się od innych podejść do usług internetowych opartych na REST tym, że zapewnia jednolity sposób opisywania zarówno danych, jak i modelu danych.


4

OData (Open Data Protocol) to standard OASIS, który określa najlepsze praktyki w zakresie budowania i używania interfejsów API RESTful. OData pomaga skupić się na logice biznesowej podczas budowania interfejsów API RESTful bez martwienia się o metody definiowania nagłówków żądań i odpowiedzi, kodów stanu, metod HTTP, konwencji adresów URL, typów nośników, formatów ładunku i opcji zapytań itp. OData prowadzi również przez śledzenie zmian, definiowanie funkcji / działań dla procedur wielokrotnego użytku i wysyłanie żądań asynchronicznych / wsadowych itp. Dodatkowo OData zapewnia możliwość rozszerzenia w celu spełnienia wszelkich niestandardowych potrzeb interfejsów API RESTful.

Interfejsy API ODEST RESTful są łatwe w użyciu. Metadane OData, możliwy do odczytu maszynowego opis modelu danych interfejsów API, umożliwiają tworzenie potężnych ogólnych serwerów proxy i narzędzi. Niektóre z nich mogą pomóc w interakcji z OData, nawet nie wiedząc nic na temat protokołu. Poniższe 6 kroków pokazuje 6 interesujących scenariuszy zużycia OData na różnych platformach programistycznych. Ale jeśli nie jesteś programistą i chcesz po prostu grać z OData, XOData to najlepszy początek dla Ciebie.

więcej szczegółów na http://www.odata.org/


4

ODATA to specjalny rodzaj REST, w którym możemy jednolicie wyszukiwać dane z adresu URL.


2

REST oznacza RE prezentacyjny S tate T ransfer który jest zasobem oparty styl architektoniczny. Oparty na zasobach oznacza, że ​​dane i funkcje są uważane za zasoby.

OData to internetowy protokół, który określa zestaw najlepszych praktyk dotyczących budowania i korzystania z usług sieciowych RESTful. OData to sposób na tworzenie usług sieciowych RESTful, a więc implementacja REST.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.