Microsoft Codename "Astoria" Online Service

di Alessio Leoncini, in WCF,

Negli ultimi anni Microsoft ha deciso di tenere informati gli sviluppatori di tutto il mondo sui progetti in corso di rilascio, anche nelle primissime fasi di sviluppo.

Circa a metà Maggio è stata resa pubblica la CTP (Community Technical Preview) del progetto denominato "Astoria", una serie di librerie (un toolkit) sviluppate per creare uno strato di accesso ai dati attraverso servizi (Data Service Layer).

L'obiettivo di un Data Service Layer è quello di disaccoppiare lo strato di business da quello dei dati, creando una serie di interfacce che consentano la gestione dei dati attraverso richieste "remote"; in riferimento al mio post precedente, Astoria distribuisce una serie di servizi HTTP secondo i principi REST basandosi su WCF.

Ho letto i documenti e guardato un po' gli esempi della CTP e nonostante il progetto sia nella fase iniziale di sviluppo ritengo interessanti alcuni aspetti :

- E' fatta grande attenzione alla manipolazione degli URIs : poiché la gestione dei dati viene fatta con richieste HTTP è naturale che tutti i parametri che siamo abituati a passare al DAL devono essere descritti direttamente nell'URL. La "nomenclatura" (parentesi quadre, $, ecc..) adottata in questo progetto è interessante e può essere un punto di studio per tutti coloro che devono realizzare qualcosa di simile, in tempi inferiori rispetto al rilascio di Astoria.

- Internamente agli esempi è stato usato l'approccio di creare un Entity Data Model per creare una relazione tra il database e gli oggetti. Interessante per chi come me non ha mai considerato questo approccio. :D

- Come in WCF, in Astoria ci si concentra principalmente sul servizio avendo la flessibilità di scegliere il formato di scambio dati; attualmente è disponibile solo XML ma è un punto chiave del progetto avere JSON per una diretta apertura con AJAX .

E qui devo fare un appunto al mio precedente post, non so se sono stato un po' frettoloso nel scrivere o se si comprende che l'accoppiamento tra REST e POX non è ne intrinseco ne inscindibile, si può sviluppare webservice secondo i principi REST anche senza scambiarsi dati strutturati semplicemente in XML e viceversa scambiarsi dati POX non significa sviluppare servizi REST; ne è esempio proprio Astoria, nel quale sarà possibile avere più sistemi di formattazione dati.

- Secondo me è interessante il principio stesso del progetto. In fondo tecnicamente non introduce novità ma è come se concretizzasse tutta la letteratura (e le discussioni) intorno a SOA in piccolo progetto REALE e realmente utilizzabile subito, e di cui da tempo si ha bisogno.

Vi faccio il mio esempio.
Chi ha avuto la fortuna di avere un cliente che lo pagasse per realizzare un sito in Flash con contenuti aggiornabili avrà dovuto fare delle scelte scendendo a compromessi con le ridotte capacità di dialogo tra l'oggetto Flash nella pagina ed il server. Essendo un grande fan di XML la mia scelta è caduta subito su questo formato, di cui peraltro Flash ha dato un buon supporto fin dalla versione 6 .
I processi erano interrogare una "risorsa" HTTP (http://www.IP/getnews.asp) e far restituire una serie di dati strutturati in XML in modo da poter cliclare in Flash i nodi, accedere agli attributi, eccetera, ed al click dell'utente sulla news interrogare http://www.IP/getnews.asp?ID=1 ;se lo guardo adesso vedo che inconsapevolmente ho realizzato una specie di Data Service Layer usando Plain Old Xml secondo alcuni dei principi di REST (GET e POST).

Astoria si inserisce proprio nello scenario in cui il client non ha un dialogo nativo con il server a causa anche del linguaggio come Flash, AJAX e Silverlight, configurando un servizio WCF per usare dati non codificati ed inserendo la gestione degli URI.

Pian piano sto dando giustificazione a molte cose che ho letto su SOA, e ne sono felice, ma mi rimangono ancora alcuni dubbi sull'approccio migliore alla sicurezza: in ambiente REST, come è possibile trasportare l'identità dell'utente che accede alla risorsa (non l'applicazione ma l'utente) senza esporsi troppo a problemi di sicurezza ma lasciando sempre un alto grado di interoperabilità?

Ci sto pensando... Buona domenica :D

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