Differenza tra i servizi Web OData e REST


196

Durante la ricerca di alcuni servizi Web, mi sono imbattuto in questa "nuova" tecnologia che Microsoft chiama OData . Leggendo la loro descrizione all'interno delle FAQ su cosa sia OData, non riesco a distinguere OData dai servizi web REST. Qualcuno potrebbe aiutarmi a capire le differenze?


2
Uno è produttore, l'altro è abilitante per i consumatori.
Kangkan,

Risposte:


98

AGGIORNAMENTO Attenzione, questa risposta è estremamente obsoleta ora che OData V4 è disponibile.


Ho scritto un post sull'argomento qualche tempo fa qui .

Come ha detto Franci, OData si basa su Atom Pub. Tuttavia, hanno sovrapposto alcune funzionalità e sfortunatamente hanno ignorato alcuni dei vincoli REST nel processo.

La funzionalità di query di un servizio OData richiede la creazione di URI basati su informazioni non disponibili o collegate nella risposta. È ciò che le persone REST chiamano informazioni fuori banda e introduce un accoppiamento nascosto tra client e server.

L'altro accoppiamento che viene introdotto è attraverso l'uso di metadati EDMX per definire le proprietà contenute nel contenuto della voce. Questi metadati possono essere rilevati su un endpoint fisso chiamato $ metadata. Ancora una volta, il cliente deve saperlo in anticipo, non può essere scoperto.

Sfortunatamente, Microsoft non ha ritenuto opportuno creare tipi di media per descrivere questi dati chiave, quindi qualsiasi client OData deve fare una serie di ipotesi sul servizio con cui sta parlando e sui dati che sta ricevendo.


1
@felickz Siamo spiacenti. Ho avuto problemi con il DNS. Dovrebbe funzionare ora. O sarà quando scade la tua cache DNS.
Darrel Miller,

6
In realtà questo non è aggiornato. V3 di OData ha aggiunto 'JSON Light' che affronta entrambe queste preoccupazioni (che in realtà sono solo una), vale a dire $ metadata è il modo in cui sai come creare query, quindi tutto ciò che mancava è un link a $ metadata nelle rappresentazioni delle risorse. È stato aggiunto, quindi entrambi i problemi scompaiono in una volta sola.
Alex James,

10
@DarrelMiller Hai detto che la tua risposta non è più aggiornata. Vuoi aggiungere un aggiornamento con la tua opinione sull'argomento? Sarei comunque interessato a conoscere la differenza tra OData 4 e REST.
Mille

2
@Kurren È nella mia lista di cose da fare, ma sfortunatamente è una lunga lista.
Darrel Miller,

2
@DarrelMiller Spero che presto troverai un po 'di tempo per aggiornare il post per aggiornarlo con OData V4.
LCJ

64

Il protocollo OData è basato sul protocollo AtomPub. Il protocollo AtomPub è uno dei migliori esempi di progettazione dell'API REST. Quindi, in un certo senso hai ragione: l'OData è solo un'altra API REST e ogni implementazione OData è un servizio web REST.

La differenza è che OData è un protocollo specifico; REST è stile architettonico e modello di design.


Potrei sbagliarmi su questo (ho appena iniziato a conoscere odata), ma dalla versione 3 del [protocollo] [ odata.org/documentation] sembra che ci sia anche un formato JSON specificato, che puoi usare in alternativa. Puoi far luce su questo?
Johannes Rudolph,

1
@JohannesRudolph, sinceramente non ne ho idea. Non ho guardato OData negli ultimi due anni. Ma è molto probabile che Microsoft avrebbe aggiunto il supporto JSON. Si noti tuttavia che ciò non modifica in alcun modo nessuna delle risposte qui. JSON vs XML è solo una questione di presentazione delle risorse REST.
Franci Penov,

1
È possibile specificare nella richiesta quale formato si desidera avere. XML e JSON dovrebbero essere entrambi supportati dalla maggior parte delle implementazioni, ad esempio impostando l'intestazione Accept su application / json (a partire da OData versione 2)
i000174

32

REST è una tecnica di progettazione generica utilizzata per descrivere come è possibile accedere a un servizio Web. Utilizzando REST è possibile effettuare richieste http per ottenere dati. Se lo provi nel tuo browser sarebbe come andare su un sito web tranne che invece di restituire una pagina web per ottenere XML. Alcuni servizi restituiranno anche dati in formato JSON che è più facile da usare con Javascript.

OData è una tecnologia specifica che espone i dati tramite REST.

Se vuoi riassumerlo molto velocemente, pensalo come:

  • RIPOSO - modello di progettazione
  • OData: tecnologia abilitante

20

Nel 2012 OData è stata standardizzata, quindi aggiungerò un aggiornamento qui.

Innanzitutto le definizioni:

REST - è un'architettura su come inviare messaggi su HTTP.

OData V4 - è un'implementazione specifica di REST, definisce davvero il contenuto dei messaggi in diversi formati (attualmente penso che sia AtomPub e JSON). ODataV4 segue i principi di riposo.

Ad esempio, le persone asp.net useranno principalmente il controller WebApi per serializzare / deserializzare gli oggetti in JSON e fare in modo che javascript faccia qualcosa con esso. Il punto di Odata è di poter eseguire query direttamente dall'URL con opzioni predefinite.


10

Dalla documentazione OData :

Il protocollo OData è un protocollo a livello di applicazione per l'interazione con i dati tramite i servizi Web RESTful.

...

Il protocollo OData è diverso dagli altri approcci di servizi Web basati su REST in quanto fornisce un modo uniforme per descrivere sia i dati che il modello di dati.


4

OData (Open Data Protocol) è uno standard OASIS che definisce le migliori pratiche per la creazione e il consumo di API RESTful. OData ti aiuta a concentrarti sulla tua logica aziendale durante la creazione di API RESTful senza doversi preoccupare degli approcci per definire intestazioni di richiesta e risposta, codici di stato, metodi HTTP, convenzioni URL, tipi di media, formati di payload e opzioni di query ecc. OData ti guida anche su tenere traccia delle modifiche, definire funzioni / azioni per procedure riutilizzabili e inviare richieste asincrone / batch, ecc. Inoltre, OData offre funzionalità di estensione per soddisfare qualsiasi esigenza personalizzata delle API RESTful.

Le API RESTful di OData sono facili da utilizzare. I metadati OData, una descrizione leggibile dal computer del modello di dati delle API, consentono la creazione di potenti proxy e strumenti client generici. Alcuni di essi possono aiutarti a interagire con OData anche senza sapere nulla del protocollo. I seguenti 6 passaggi mostrano 6 scenari interessanti del consumo di OData su diverse piattaforme di programmazione. Ma se non sei uno sviluppatore e desideri semplicemente giocare con OData, XOData è il miglior inizio per te.

per maggiori dettagli su http://www.odata.org/


4

ODATA è un tipo speciale di REST in cui possiamo interrogare i dati in modo uniforme dall'URL.


2

REST è l' acronimo di RE presentation S tate T ransfer, uno stile architettonico basato sulle risorse. Basato sulle risorse significa che i dati e le funzionalità sono considerati risorse.

OData è un protocollo basato sul Web che definisce un insieme di best practice per la creazione e l'utilizzo di servizi Web RESTful. OData è un modo per creare servizi Web RESTful e quindi un'implementazione di REST.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.