BlogServiceHost.Create()

WCF & Azure - Il blog di Fabio Cozzolino

Recent Posts

Tags

My

Twitter

Community

Archives

Email Notifications

Social Bar Widget

[WCF REST #0] REST in WCF

Con questo post inizio una serie dedicata a REST e al suo utilizzo all'interno di WCF. Partiamo quindi dall'inizio. Cos'è REST? REST sta per REpresentional State Transfer ed indica uno stile architetturale (non una tecnologia o una specifica, tenetelo bene a mente) per la realizzazione di soluzioni distribuite.

Non mi dilungo molto sulla definizione di REST per la quale vi rimando alle seguenti risorse:

Anche nella precedente versione di WCF era possibile utilizzare REST, ma si doveva scrivere parecchio codice prima di raggiungere un risultato accettabile. Nella versione 3.5, invece, sono state introdotte diverse novità che semplificano di molto l'approccio ma soprattutto l'integrazione con le altre tecnologie come ASP.NET AJAX e Silverlight.

Concetti base di REST

L'approccio REST, trattandosi appunto di uno stile architetturale, ci impone l'adozione di alcune regole. Innanzitutto, a differenza di quanto accadde nelle SOA, l'obiettivo principale non è il servizio reso, ma la risorsa con la quale intendiamo interagire. La risorsa deve necessariamente essere identificata univocamente e per questo necessità di un URI ben definito. Immaginiamo di voler accedere alle informazioni della risorsa "fabio.cozzolino" che identifica un utente nel dominio dotnetside.org. A quel punto il suo URI potrebbe essere:

http://dotnetside.org/members/fabio.cozzolino

In questo modo viene identificato univocamente l'utente "fabio" nel dominio dotnetside.org. Identificata la risorsa, posso decidere quali sono i metodi HTTP che devo utilizzare per richiedere la risorsa stessa o modificarne lo stato.

Metodo HTTP Descrizione
GET Recupera una risorsa
E’ in sola lettura
Cacheable
PUT Aggiorna una risorsa
Utilizzato anche per creare le risorse se il client ne conosce l’indirizzo a priori
Idempotent
DELETE Cancella la risorsa specificata
Idempotent
POST Crea una nuova risorsa
Unsafe

Il vantaggio di utilizzare i metodi HTTP consiste nel fornire le nostre applicazioni di una interfaccia unica e condivisa. GET,PUT,DELETE,POST sono metodi universalmente conosciuti e ampiamente supportati da diversi framework. In sostanza, quindi, l'utilizzo dell'HTTP, dei suoi metodi e più ampiamente anche dei suoi messaggi di risposta (Status Code) consente l'accesso alla nostra applicazione a qualsiasi client che li supporta, semplificandone l'utilizzo rispetto al più complesso sistema gestito in SOA.

REST sostituisce SOAP?

E' questa una domanda piuttosto frequente alla quale cercherò di dare una risposta definitiva. ASSOLUTAMENTE NO!!! Parliamo di due cose decisamente differenti. SOAP è un protocollo per lo scambio di messaggi tra un client ed un servizio. A SOAP, basato su xml e il cui formato è sostanzialmente molto semplice, si sono via via aggiunte negli anni una serie di specifiche (WS-*), di sicuro necessarie, che ne hanno reso però complesso l'utilizzo.

Ma con REST non stiamo scoprendo l'acqua calda. Esiste da diversi anni. Semplicemente il crescere di soluzioni web che fanno uso di AJAX o di Silverlight richiedono lo sviluppo di servizi semplici, facilmente consumabili. Questo ha portato alla ricerca di una soluzione alternativa a quella Service Oriented, spostando l'attenzione quindi su una soluzione ora definita come Resource Oriented (ROA, Resource Oriented Architecture).

Nei prossimi post vedremo come utilizzare REST in WCF.

Posted: Nov 30 2008, 05:24 AM by Fabio.Cozzolino | with 3 comment(s)
Filed under: ,

Comments

Tommaso Caldarola said:

Una curiosità, stai per caso leggendo il testo RESTful .NET di Jon Flanders (oreilly.com/.../9780596519209)?

# December 4, 2008 5:20 AM

Fabio.Cozzolino said:

Ho iniziato a sfogliarlo. Onestamente l'argomento già lo conosco, ma magari tra qualche tempo preparo anche una recensione ... Smile

# December 5, 2008 3:43 AM

BlogServiceHost.Create() said:

Introduzione Ormai diverse settimane fa abbiamo parlato di cosa è REST. Oggi vediamo come sviluppare

# March 4, 2009 3:29 PM