Utilizzo di un servizio OData in un'applicazione client (WCF Data Services)
È possibile accedere a un servizio che espone un feed OData (Open Data Protocol) specificando un URI per un browser. L'URI fornisce l'indirizzo di una risorsa e i messaggi di richiesta vengono inviati a questi indirizzi per accedere ai dati sottostanti rappresentati dalla risorsa o per modificarli. Il browser invia un comando GET HTTP e restituisce la risorsa richiesta come feed OData. Per ulteriori informazioni, vedere Accesso ai feed ODatada un Web browser (Guida rapida di WCF Data Services).
Sebbene l'utilizzo di un browser possa risultare utile per verificare che un servizio OData restituisca i dati previsti, l'accesso ai servizi OData di produzione che consentono inoltre di creare, aggiornare ed eliminare dati viene in genere eseguito tramite linguaggi di codice delle applicazioni o di script in una pagina Web. In questo argomento vengono forniti cenni preliminari sull'accesso ai feed OData da un'applicazione client.
Accesso ai dati e relativa modifica tramite la semantica REST
OData garantisce l'interoperabilità tra i servizi che espongono feed OData e le applicazioni che utilizzano feed OData. Le applicazioni accedono ai dati in un servizio basato su OData e li modificano inviando messaggi di richiesta di un'azione HTTP specifica e utilizzando un URI che indirizza una risorsa di entità sulla quale deve essere eseguita l'azione. I dati di entità necessari vengono forniti come payload codificato in modo appropriato nel corpo del messaggio.
Azioni HTTP
OData supporta le azioni HTTP riportate di seguito per l'esecuzione di operazioni di creazione, lettura, aggiornamento ed eliminazione sui dati di entità rappresentati dalla risorsa indirizzata.
GET HTTP: rappresenta l'azione predefinita quando l'accesso a una risorsa viene eseguito da un browser. Nel messaggio di richiesta non viene fornito alcun payload e viene restituito un metodo di risposta con un payload contenente i dati richiesti.
POST HTTP: inserisce nuovi dati di entità nella risorsa fornita. I dati da inserire vengono forniti nel payload del messaggio di richiesta. Il payload del messaggio di risposta contiene i dati per l'entità appena creata, inclusi i valori della chiave generati automaticamente. L'intestazione contiene inoltre l'URI che indirizza la nuova risorsa di entità.
DELETE HTTP: elimina i dati di entità rappresentati dalla risorsa specificata. Nei messaggi di richiesta o di risposta non è presente un payload.
PUT HTTP: sostituisce i dati di entità esistenti in corrispondenza della risorsa richiesta con i nuovi dati forniti nel payload del messaggio di richiesta.
MERGE HTTP: a causa delle inefficienze esistenti a livello di esecuzione di un'eliminazione seguita da un inserimento nell'origine dati allo scopo di modificare i dati di entità, in OData è stata introdotta una nuova azione MERGE HTTP. Il payload del messaggio di richiesta contiene le proprietà che devono essere modificate nella risorsa di entità indirizzata. Poiché l'azione MERGE HTTP non è definita nella specifica HTTP, è possibile che sia necessaria elaborazione aggiuntiva per indirizzare una richiesta MERGE HTTP tramite server non dotati di supporto per OData.
Per ulteriori informazioni, vedere la pagina relativa alle operazioni in OData.
Formati del payload
Per una richiesta PUT HTTP, POST HTTP o MERGE HTTP, il payload di un messaggio di richiesta contiene i dati di entità da inviare al servizio dati. Il contenuto del payload dipende dal formato dei dati del messaggio. Tale payload è inoltre incluso nelle risposte HTTP a tutte le azioni, tranne DELETE. OData supporta i formati del payload seguenti per l'accesso ai dati e la relativa modifica con il servizio:
Atom: codifica di messaggi basati su XML definita da OData come estensione del protocollo di pubblicazione Atom (AtomPub) per lo scambio di dati su HTTP per feed Web, podcast, Wiki e funzionalità Internet basate su XML. Per ulteriori informazioni, vedere la pagina relativa al formato Atom in OData.
JSON: acronimo di JavaScript Object Notation. Si tratta di un formato di interscambio dei dati leggero basato su un subset del linguaggio di programmazione JavaScript. Per ulteriori informazioni, vedere la pagina relativa alle convenzioni JSON in OData.
Il formato del messaggio per il payload deve essere incluso nell'intestazione del messaggio di richiesta HTTP. Per ulteriori informazioni, vedere la pagina relativa alle operazioni in OData.
Accesso ai dati e relativa modifica tramite le librerie client
WCF Data Services include librerie client che consentono di utilizzare con più facilità un feed OData dalle applicazioni client basate su .NET Framework e Silverlight. Queste librerie semplificano l'invio e la ricezione di messaggi HTTP, oltre a convertire il payload del messaggio in oggetti CLR che rappresentano dati di entità. Le librerie client rendono disponibili le due classi principali DataServiceContext e DataServiceQuery<TElement>. Queste classi consentono di eseguire una query su un servizio dati e di utilizzare quindi i dati di entità restituiti come oggetti CLR. Per ulteriori informazioni, vedere Client dati (WCF Data Services) e WCF Data Services (Silverlight).
È possibile utilizzare la finestra di dialogo Aggiungi riferimento al servizio in Visual Studio per aggiungere un riferimento a un servizio dati. Questo strumento richiede i metadati del servizio a un servizio dati a cui viene fatto riferimento e genera l'oggetto DataServiceContext che rappresenta un servizio dati, oltre a generare le classi del servizio dati client che rappresentano entità. Per ulteriori informazioni, vedere Generazione di classi del servizio dati client (WCF Data Services).
Sono disponibili altre librerie di programmazione per consentire l'utilizzo di un feed OData in altri tipi di applicazioni client. Per ulteriori informazioni, vedere la pagina relativa a OData SDK.