Jaka jest potrzeba Odata, gdy mam JSON?

23

Staram się zrozumieć sens Odaty i kiedy ma to sens. W tej chwili działam za pomocą kontrolera ASP.NET i MVC / WebApi do serializacji / deserializacji obiektów do JSON i mam do tego javascript.

Z tego, co mogę powiedzieć, zaletą OData jest możliwość zapytania bezpośrednio z adresu URL ... Ale ponieważ piszę kod klienta i serwera, nie ma takiej potrzeby.

Czy ktokolwiek kiedykolwiek przeanalizuje wyniki zapytania ODaya w javascript?

Może OData jest bardziej na temat zapewnienia ogólnego punktu końcowego dla WSZYSTKICH klientów, aby uzyskać szczegółowe informacje z zapytania, którego JSON nie udostępnia? Więc jeśli byłem dostawcą danych, to przypuszczam, że po to jest odata?

Pomóż mi zrozumieć cel i zastosowanie REST / JSON / ODATA.

punkouter
źródło
2
Aby ułatwić pracę, możesz być także zainteresowany Połączonymi danymi , Połączoną platformą danych , SPARQL i Słownictwem katalogu danych . Wszystkie są różnymi rzeczami, które służą do różnych celów i które można łączyć z JSON , np. Format zapytania JARON SPARQL 1.1 , i oczywiście z REST .
Trylks,

Odpowiedzi:

42

JSON to po prostu format wymiany danych oparty na JavaScript.

REST jest stylem architektury, podczas gdy OData jest specyficzną implementacją REST zaprojektowaną do generowania i zużycia danych, która obsługuje dwa formaty: AtomPub i JSON.

Tak więc różnica między JSON ze zwykłym REST i OData to opcje OData do manipulacji danymi, np. Jeśli kwerendujemy dane za pomocą protokołu OData, możemy określić poniższe opcje w URI,

  • $ orderby
  • $ top
  • Pomiń
  • $ filter
  • format $
  • Wybierz

Możemy wykonać projekcję, połączyć zasoby itp., A wszystkie te opcje są dostępne od razu po wyjęciu z pudełka. Teraz wyobraź sobie, że gdybyśmy musieli zapewnić wszystkie te funkcje w naszej własnej usłudze REST, musielibyśmy,

  • Zaimplementuj je wszystkie
  • Stwórz własną konwencję / słowa kluczowe dla różnych operacji

To nie tylko dużo pracy, ale także prowadzi do niespójności i tworzy krzywą uczenia się dla naszych konsumentów danych.

Sajad Deyargaroo
źródło
5

JSON lub JavaScript Object Notation to jedynie format lub standard danych. Jest to uzgodniony format przesyłania czegoś takiego jak nazwa logowania LUB coś, co musi zostać zużyte przez usługę REST.

Zobacz tę część: http://en.wikipedia.org/wiki/JSON

Chociaż pierwotnie wywodzi się z języka skryptowego JavaScript, JSON jest niezależnym od języka formatem danych, a kod do analizowania i generowania danych JSON jest łatwo dostępny w wielu różnych językach programowania.

Nie jest to część konkretnego języka programowania, więc różne systemy mogą dość łatwo przekazywać dane, jeśli wiedzą, że używają JSON.

Jeśli chodzi o REST, jest to po prostu styl architektury używany w usługach sieciowych.

Zobacz tę część: http://en.wikipedia.org/wiki/Representational_state_transfer

Jednym ze sposobów, aby o tym pomyśleć, jest napisanie usługi internetowej, z którą wiele różnych komputerów może rozmawiać i wymieniać informacje. Możesz napisać swoją usługę internetową, aby akceptować dane za pośrednictwem adresu URL

 http://www.myservice.com/specialRESTService?name=punkouter

Odpowiedź może być obiektem JSON sygnalizującym otrzymanie danych.

{
    "name": "punkouter",
    "status": "service downloaded your data",
}

Nigdy nie słyszałem o OData, więc googlowałem:

OData jest zbudowana na protokole AtomPub i JSON, gdzie struktura Atom jest kopertą zawierającą dane zwrócone z każdego żądania OData. Żądanie OData używa modelu REST dla wszystkich żądań. Każde polecenie REST jest żądaniem HTTP POST, GET, PUT, PATCH lub DELETE (mapowanie do CRUD), gdzie specyfikacja polecenia znajduje się w adresie URL.

POBIERZ: Uzyskaj kolekcję encji (jako dokument paszowy) lub pojedynczą encję (jako dokument wejścia).

POST: Utwórz nowy byt z dokumentu wejścia.

PUT: Zaktualizuj istniejący byt dokumentem wejścia.

PATCH: Zaktualizuj istniejący byt o częściowy dokument wejścia.

USUŃ: Usuń encję.

Wygląda na to, że OData jest czymś napisanym w celu ulepszenia waniliowej architektury REST .. Ale wygląda na to, że może dać ci kilka dodatkowych rzeczy, które pomogą Ci zacząć, zamiast pisać od zera w C # lub w jakimkolwiek języku, którego używasz.

Jeśli Twoja praca zmusza Cię do korzystania z OData, nadal będziesz używać JSON..Ale w ramach OData / standardu napisanego przez Microsoft i in.

Czy ktokolwiek kiedykolwiek przeanalizuje wyniki zapytania OData (sic) w javascript?

Tak, ponieważ (brzmi jak) używa JSON. Używanie JS byłoby całkowicie naturalne.

Może OData jest bardziej na temat zapewnienia ogólnego punktu końcowego dla WSZYSTKICH klientów, aby uzyskać szczegółowe informacje z zapytania, którego JSON nie udostępnia? Więc jeśli byłem dostawcą danych, to przypuszczam, że po to jest Odata?

Odata zapewniłby usługę REST .. ale z kilkoma dodanymi standardowymi usługami na zwykłym „ogólnym” punkcie końcowym usługi REST .. klienci nie dbają o to, czy korzystasz z OData, czy też uruchamiają własną usługę C # .. tak długo ponieważ odpowiedzi były w uzgodnionym formacie (jak JSON). Jednak w pracy mogą chcieć korzystać z OData, ponieważ zapewnia wiele „gotowych” funkcji.

Erik
źródło
Praca nie ma znaczenia. Chciałem tylko wiedzieć, do czego służy Odata. JSON to tylko sposób na reprezentację danych ... podobnie jak ODATA ... ale ... Chyba mam pytanie, jaki jest scenariusz gdzie używanie REST i zwracanie JSON nie wystarczy… a korzystanie z ODATA byłoby zaletą?
punkouter
nie nie, OData to architektura usług RESTful ... która używa JSON do reprezentowania danych. Nie zyskałbyś nic, używając bibliotek / standardów OData ... nic, czego technicznie nie mógłbyś sam napisać ... ale użycie OData może zaoszczędzić czas, jeśli budujesz coś z tym ... w przeciwieństwie do pisania rzeczy samemu
Erik
Json? Ale wygląda na to, że OData zwraca XML ?? Czy jest to jedno i drugie? Jestem zmieszany.
punkouter
Z Twojego łącza „OData obsługuje dwa formaty reprezentowania zasobów (Kolekcje, Wpisy, Łącza itp.), Które udostępnia: format Atom oparty na XML i format JSON.”
Erik
2

W przypadku pytania „dlaczego” istnieje naprawdę dobra definicja w książce RESTful Web APIs - zasadniczo OData implementuje wzorzec kolekcji, gdzie kolekcja jest zasobem, który udostępnia listę zasobów poprzez łącza.

Plezjozaur
źródło
2

OData to specyficzna implementacja usługi RESTful ze standardem interfejsu. Zaletą jest to, że ujawniasz interfejs API swojego produktu i mówisz, że jest on zgodny ze standardem OData, ponieważ użytkownicy, którzy znają już OData, mogą z niego łatwo korzystać bez poświęcania dużo czasu na czytanie dokumentacji API.

Wada: Chociaż OData doskonale ujawnia bazową bazę danych, specyfikacja nie obejmuje obsługi transakcji i nie może być stosowana w aplikacjach, w których możemy mieć usługę RESTful służącą zarówno jako interfejs DB, jak i interfejs transakcji.

użytkownik3808122
źródło