Open Data Protocol e WCF Data Services

di Cristian Civera, in .NET 4.0,

E' un po' che non scrivo nel blog e me ne scuso. In generale cerco sempre di dare qualcosa di più rispetto ad un semplice link e sebbene ho scritto poco in questo blog, potete trovare il frutto delle mie esperienze negli script che settimanalmente sforno. Spero che questo sia l'inizio di una serie infinita di post :-)

Dopo questa premessa vorrei porre l'attenzione su un nuovo modo di rendere fruibili le informazioni mediante HTTP. Microsoft sta infatti spingendo molto sull'Open Data Protocol e perfino al MIX ha mostrato una demo che mostrava come tramite REST si possa interrogare il database di netflix. Con OData si vuole spingere anche le altre piattoforme ad implementare un modo univoco per interrogare database tramite HTTP e ottenere risposte in formato AtomPub o Json. Ci sono già librerie per PHP, Java e ObjectC e di fatto stanno rendendo standard quelli che una volta erano conosciuti con il nome di ADO.NET Data Services e poi ribattezzati WCF Data Services, perché di fatto sono dei servizi WCF preconfezionati che permettono le classiche operazioni CRUD sui dati. Li abbiamo trattati e li tratteremo ancora in WinFXItalia.com e SilverlighItalia.com, e potete trovare materiale a riguardo qua.

Le specifiche ora sono giunte alla versione 2 e in esse sono cambiati alcuni modi di formattazione delle risposte, soprattutto per i tipi complessi. Tale versione è implementata dal .NET Framework 4.0 e quindi dobbiamo aspettare ancora un pochetto, soprattutto perchè la versione 3.5 presenta molteplici known issue.

Parecchio tempo fa avevo manifestato le mie perplessità su questa moda REST/POX e presentato i limiti di queste tecnologie che sono stati in parte colmati. Ad esempio non mi è mai piaciuto che io mi debba leggere un documento che mi spieghi come è fatto l'XML che ottengo in risposta o quali sono gli URI da chiamare. Guarda caso OData definisce questi aspetti e li uniforma. Inoltre se abbiamo un servizio OData possiamo invocare l'URI http://localhost:41874/WcfDataService1.svc/$metadata e ottenere in risposta un XML che definisce il container e le entità. Questo ci permette di aprire Visual Studio e tramite 'add service reference' referenziare un servizio OData. Quello che otteniamo è un wrapper che attraverso IQueryable ci permette di creare query e tradurle automaticamente in URI, come da queste specifiche.

Tutto questo è molto bello, ma sa di già visto e sembra l'ennesimo tentativo di cercare di spingere all'uso di uno standard. I metadati di OData hanno una grossa similitudine con il WSDL e con tutte le altre specifiche WS-* utilizzate per i servizi basati su SOAP. La sensazione è che si voglia semplificare le specifiche e il protocollo per favorirne l'adozione, ma così facendo ovviamente si lasciano irrisolti molte cose. OData non è infatti paragonabile alle funzionalità offerte da WS-* in termini di sicurezza, gestione degli errori e delle transazioni, routing e indipendenza dal mezzo.

Quindi semplicemente le due tecnologie (OData, WS-*) non sono in concorrenza, ma semplicemente coprono scopi diversi. Per questo motivo nel capitolo del libro su VB e C# che ho dedicato a WCF, ho affrontato questa tecnologia in modo da analizzare come questa si presta sia per servizi classici SOAP, sia per servizi OData e a quest'ultimi ho dedicato un'ampia finestra.

Commenti

Visualizza/aggiungi commenti

| Condividi su: Twitter, Facebook, LinkedIn

Per inserire un commento, devi avere un account.

Fai il login e torna a questa pagina, oppure registrati alla nostra community.

Nella stessa categoria
I più letti del mese