Qual è la necessità di Odata quando ho JSON?


23

Sto cercando di capire il punto di Odata e quando avrebbe senso. In questo momento, come lavoro, utilizzo ASP.NET e il controller MVC / WebApi per serializzare / deserializzare gli oggetti in JSON e fare in modo che javascript faccia qualcosa.

Da quello che posso dire il vantaggio di OData è la possibilità di eseguire query direttamente dall'URL ... Ma dal momento che sto scrivendo il codice client e server non è necessario.

Qualcuno avrebbe mai analizzato i risultati di una query ODaya in javascript ??

Forse OData consiste nel fornire un endpoint generico a TUTTI i client per ottenere informazioni dettagliate da una query che JSON non fornisce? Quindi, se fossi un fornitore di dati, suppongo che sia quello che serve a odata?

Aiutami a capire lo scopo e l'uso di REST / JSON / ODATA.


2
Per rendere le cose "più facili" potresti anche essere interessato ai dati collegati , alla piattaforma dati collegata , a SPARQL e al vocabolario del catalogo dati . Tutte sono cose diverse che servono a scopi diversi e che possono essere combinate con JSON , ad esempio SPARQL 1.1 Query Results JSON Format , e ovviamente con REST .
Trylks

Risposte:


42

JSON è solo un formato di scambio di dati basato su JavaScript.

REST è uno stile di architettura mentre OData è un'implementazione specifica di REST progettata per generare e consumare dati, che supporta due formati, AtomPub e JSON.

Quindi la differenza tra JSON con REST semplice e OData sono le opzioni in OData per la manipolazione dei dati, ad esempio, se eseguiamo una query sui dati utilizzando il protocollo OData, possiamo specificare le opzioni seguenti nell'URI,

  • $ orderby
  • $ top
  • $ Skip
  • $ Filtro
  • $ formato
  • $ selezionare

Possiamo fare proiezioni, collegare le risorse, ecc. E tutte queste opzioni sono disponibili immediatamente. Ora immagina che se dovessimo fornire tutte queste funzionalità nel nostro servizio REST, dovremmo,

  • Implementali tutti
  • Crea la nostra convenzione / parole chiave per diverse operazioni

Non è solo molto lavoro, ma porta anche a incoerenze e crea una curva di apprendimento per i nostri consumatori di dati.


5

La notazione oggetto JSON o JavaScript è semplicemente un formato o uno standard per i dati. È un formato concordato per la trasmissione di qualcosa come un nome di accesso O qualcosa che deve essere utilizzato da un servizio REST.

Vedi questa parte: http://en.wikipedia.org/wiki/JSON

Sebbene originariamente derivato dal linguaggio di scripting JavaScript, JSON è un formato di dati indipendente dalla lingua e il codice per l'analisi e la generazione di dati JSON è prontamente disponibile in una grande varietà di linguaggi di programmazione.

Non fa parte di un particolare linguaggio di programmazione, quindi diversi sistemi possono trasferire i dati abbastanza facilmente, se sanno che stanno usando JSON.

Per quanto riguarda REST è semplicemente uno stile di architettura utilizzato per i servizi web.

Vedi questa parte: http://en.wikipedia.org/wiki/Representational_state_transfer

Un modo di pensarci è se si desidera scrivere un servizio Web con cui molti computer diversi possono parlare ... e scambiare informazioni. È possibile scrivere il servizio Web per accettare i dati tramite l'URL

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

La risposta potrebbe essere un oggetto JSON che segnala che i tuoi dati sono stati ricevuti.

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

Non avevo mai sentito parlare di OData, quindi l'ho cercato su Google:

OData è basato sul protocollo AtomPub e JSON in cui la struttura Atom è la busta che contiene i dati restituiti da ciascuna richiesta OData. Una richiesta OData utilizza il modello REST per tutte le richieste. Ogni comando REST è una richiesta POST, GET, PUT, PATCH o DELETE http (mappatura su CRUD) in cui le specifiche del comando sono nell'URL.

OTTIENI: ottieni una raccolta di entità (come documento feed) o una singola entità (come documento entry).

POST: crea una nuova entità da un documento di entrata.

PUT: aggiorna un'entità esistente con un documento di entrata.

PATCH: aggiorna un'entità esistente con un documento di entrata parziale.

ELIMINA: rimuove un'entità.

Sembra che OData sia qualcosa di scritto per migliorare un'architettura in stile REST alla vaniglia .. Ma sembra che possa darti alcune cose aggiuntive per farti andare avanti, invece di dover scrivere cose da zero in C # o in qualsiasi linguaggio tu stia usando.

Se lavori ti sta spingendo ad usare OData, dovresti comunque usare JSON..ma all'interno del framework / standard OData scritto da Microsoft et al.

Qualcuno avrebbe mai analizzato i risultati di una query OData (sic) in javascript ??

Sì, poiché (sembra) utilizza JSON. Sarebbe perfettamente naturale usare JS.

Forse OData consiste nel fornire un endpoint generico a TUTTI i client per ottenere informazioni dettagliate da una query che JSON non fornisce? Quindi, se fossi un fornitore di dati, suppongo che sia quello che serve a Odata?

Odata fornirebbe un servizio REST .. ma con alcuni servizi standard aggiunti oltre a un semplice endpoint di servizio REST "generico" .. i clienti non si preoccupano se stai usando OData o eseguendo il tuo servizio C # per tutto il tempo poiché le risposte erano in un formato concordato (come JSON). Tuttavia, per il tuo lavoro forse vogliono usare OData perché fornisce molte funzionalità "out of the box".


Al lavoro non importa .. Volevo solo sapere a cosa serve Odata..JSON è solo un modo per rappresentare i dati .. e così è ODATA .. ma .. Immagino che la domanda che ho sia: cos'è uno scenario dove usare REST e restituire JSON non è abbastanza .. e usare ODATA sarebbe un vantaggio?
punkouter

no no, OData è un'architettura di servizio RESTful ... che utilizza JSON per rappresentare i dati. Non otterresti nulla usando le librerie / gli standard di OData ... niente che tecnicamente non possa essere scritto da te stesso .. ma l'uso di OData potrebbe farti risparmiare tempo se stai costruendo cose con esso ... invece di scriverle tu stesso
Erik

json? Ma mi sembra che OData restituisca XML ?? O entrambi? Non ho capito bene.
punkouter


Dal tuo link "OData supporta due formati per rappresentare le risorse (raccolte, voci, collegamenti, ecc.) Che espone: il formato Atom basato su XML e il formato JSON".
Erik

2

Per la domanda "perché", nel libro RESTful Web API c'è una definizione davvero buona : essenzialmente OData implementa un modello di raccolta, in cui una raccolta è una risorsa che fornisce un elenco di risorse tramite collegamenti.


2

OData è un'implementazione specifica del servizio RESTful con uno standard per l'interfaccia. Il vantaggio è quando si espone l'API del proprio prodotto e si afferma che è conforme allo standard OData, poiché gli utenti che hanno già familiarità con OData possono usarlo prontamente senza perdere molto tempo a leggere la documentazione dell'API.

Svantaggio: sebbene OData sia eccellente nell'esporre il database sottostante, la specifica non include il supporto per le transazioni e non può essere utilizzata in applicazioni in cui è possibile avere un servizio RESTful che funge sia da interfaccia DB sia da interfaccia di transazione.

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.