Oggi da buon malato nulla facente (poi nemmeno tanto) leggo i miei feed ed ecco che ne viene fuori
Nel 2000 Roy Fielding, uno dei principali autori del protocollo HTTP, pubblicò la sua tesi di dottorato intitolata "Architectural Styles and the Design of Network-based Software Architectures" dando il la a quello stile definito appunto "Representational State Transfer" (REST in breve).
Uno dei concetti fondamentali in questo genere di architetture è quello di risorsa, rappresentata da una URI. Per comunicare con la risorsa (singola o collezione di altre risorse) si usa HTTP. In tal modo attraverso l'uso dei verbi (metodi) HTTP, quali HEAD, GET, POST, PUT e DELETE si può chiedere al server web una rappresentazione o creare risorse aggiuntive. L'altro concetto fondamentale da tenere a mente è che HTTP è prima di tutto un protocollo stateless. Questo significa che ogni richiesta è e deve essere totalmente indipendente dalle precedenti; in tal modo il messaggio della richiesta conterrà tutte le informazioni necessarie affinché il server possa processarlo e fornire una risposta corretta.
Una delle conclusioni a cui si giunge studiando REST e il libro di cui sopra è la semplicità del tutto. Vi è, almeno per quanto mi riguarda, una sensazione di scoperta dell'acqua calda quando ci si rende conto che Fielding prima e il duo Richardson e Ruby poi non fanno altro che spiegare al mondo come avrebbe dovuto essere il web interconnesso prima dell'avvento di quelli che comunemente si chiamano "enterprise web services".
Recensione di RESTful Web Services - Stacktrace.it
Che i WS fossero una moda oramai era un trend consolidato dentro la mia testa, ed il concetto di servizio web stesso è abbastanza ampio da poter essere espletato tramite una miriade di "forme".
Non conosco REST ma stando a quello che leggo in giro (e che leggerò da questo libro) una cosa mi stupisce di "tutto questo" e cioè la sua semplicità/linearità.
Rimando alla lettura della recensione per maggiori dettagli sul libro e sulla metodologia e magari, se ne avete, maggiori informazioni / risorse da consultare :)
Tags: rest, restful, o'reilly, libro
Una bella botta di notorietà a REST gliela ha data la stessa simpatica brigata che, vado a memoria, nel 2003 iniziò a lavorare sulla specifica di Atom, il formato di syndacation creato per offrire una alternativa sensata alle "specifiche" (se vogliamo chiamarle così) di RSS (scegli una versione a piacere tra 0.9, 1.0 e 2.0). Un bell'esempio di protocollo REST è APP (Atom Publishing Protocol, che -- mi dicono -- è stato introdotto anche nella versione 2.3 di Wordpress.)
RispondiEliminaUn draft leggibile è qui:
http://bitworking.org/projects/atom/draft-ietf-atompub-protocol-15.html
Sam Ruby, Mark Pilgrim e Joe Gregorio sono primi tre nomi che mi vengono in mente che hanno sempre spinto REST in opposizione agli approcci ultra complessi propagandati dalle corporation (Sun, Microsoft...) quali SOAP, WSDI e ammennicoli annessi. Standard che reinventavano in gran parte la ruota e che per funzionare a dovere necessitavano di tool che vendevano le stesse software house.
Prendi ad esempio questo di Pilgrim post del 2002(!):
http://diveintomark.org/archives/2002/04/25/soap_vs_rest
Rileggendo le citazioni nel post è chiaro che Pilgrim e soci ci hanno visto lungo. Non che avessi dubbi, se hai uno standard flessibile e diffusissimo come HTTP cerchi di sfruttarlo al massimo prima di dire che te ne serve un altro per fare le cose che già si fanno con il primo.
Grazie dei riferimenti Deelan.
RispondiEliminaMi permetto di aggiungere un commento in favore della asserzione "approcci ultra complessi".
Non parlo per esperienza diretta ma dopo aver visto Dario, Federico e Francesco sputare letteralmente sangue su SOAP (citato da te), UDDI (di Systinet), WS-* (in ogni sua forma), WSE (di Microsoft sostituiti con non so cosa nel Framework 3.X) e chi più ne ha più ne metta il commento è stato tanto per citare un vostro articolo "Interesting but... hmmm, it sounds slow".
Io personalmente non amo l'approccio WS tant'è che quel poco che "ho fatto" s'è focalizzato su di un approccio di tipo network studiando come il P2P potesse sopperire alle "mancanze" dei WS ma questa è un'altra storia.
La domanda principe è sempre stata: "Tutta questa sovrastruttura giustifica il risultato?" Il dubbio sulla risposta m'era venuto, ma oggi posso affermare un secco NO.
Immagino che molti dei principi delle SOA (se non tutti) rimangano in piedi se si utilizza REST, dopo tutto nessuno vincola l'uso dei WS, ma sarebbe molto interessante studiare come le sovrastrutture di cui sopra si modifichino per venire incontro alla "semplicità" del nuovo paradigma.
Penso d'aver trovato un nuovo passatempo, che si aggiunge agli altri 1000mila ...
Concludo dicendo che con stacktrace state facendo uno splendido lavoro, meritereste molta più notorietà a dire il vero, molta più di quella che già avete. Spero di poter contribuire alla cosa :)
A presto, magari su queste pagine ;)
Grazie mille per le belle parole! Comunque REST non e` perfetto e ha sicuramente dei limiti, ma meglio aggiungere feature a qualcosa di semplice che a qualcosa di gia` bloated ;)
RispondiEliminaCiao Andrea!
RispondiEliminaSicuramente l' implementazione RESTful costituisce uno stile architetturale tanto semplice quanto potente. Purtroppo, la sua totale fatiscenza nei primi anni non ha ripagato sufficientemente i suoi nobili principi ispiratori (uno tra tutti, l'uniformità di accesso logico alle risorse tramite URI), che tuttavia si sono parzialmente affermati in specifiche come ATOM/APP (in questo sono perfettamente d'accordo con Deelan).
Secondo me una questione interessante su cui riflettere riguarda il fatto che REST ha risvegliato interesse guarda caso proprio nel momento in cui si sono affermati gli Entity Framework nel mondo legacy. Mi fa riflettere in particolar modo come Microsoft abbia intrapreso la strada REST soltanto a partire da quest'anno, con l'introduzione di ADO.NET Data Services (Codename "Astoria") estensione di ASP.NET 3.5 a cui si accompagna un Entity Framework vero e proprio.
Se vogliamo poi dare una valutazione definitiva al successo reale di REST, dovremmo secondo me aspettare ancora qualche annetto...
P.S.: Un paio di mie riflessioni a riguardo le puoi trovare qui:
http://blogs.ugidotnet.org/dsantarelli/archive/2007/11/07/altre-considerazioni-su-rest.aspx