Sai cos’è un Web Service
Cosa sono i Web Service: Guida Pratica a SOAP e REST
Un Web Service è, in termini semplici, un servizio reso disponibile attraverso il Web. Un esempio pratico di Web Service è quello delle prenotazioni online, come l'acquisto di un biglietto aereo o la prenotazione di una camera d’albergo.
Quando compi questa operazione, il tuo computer interroga un server che raccoglie tutte le disponibilità in base ai tuoi criteri di ricerca e ti permette di scegliere l'opzione migliore.
Mettiamo che tu debba viaggiare da Roma (X) a Milano (Y) in data Z. Il server interroga le diverse linee aeree che coprono quella tratta e ti restituisce online i risultati possibili.
Attenzione a non confonderti: non si tratta di un'interrogazione diretta a un database (non sarebbe possibile per ovvi motivi di sicurezza). Le disponibilità dei posti ti vengono restituite grazie a un collegamento in tempo reale (real-time). Le linee aeree, infatti, espongono i loro dati attraverso delle API che il server interroga sfruttando proprio la tecnologia dei Web Service.
In poche parole, il Web Service è una piattaforma di comunicazione indipendente che permette a diverse applicazioni di dialogare tra loro utilizzando uno standard condiviso.
Come funziona un Web Service?
Abbiamo detto che il Web Service consente a diverse applicazioni di scambiarsi dati. Questa è una definizione esaustiva, ma come avviene questo scambio nello specifico?
Un computer, che chiameremo Client (o Service Consumer), manda una richiesta a un Service Provider, il quale risponderà di conseguenza. Affinché la comunicazione tra Client e Provider avvenga con successo, sono necessari due elementi fondamentali:
-
Un Medium: lo strumento di comunicazione (ad esempio, il protocollo HTTP via Internet).
-
Un Formato: una "lingua" compresa da entrambe le applicazioni (come JSON o XML).
Esistono due principali architetture di Web Service che si servono di differenti approcci. Si chiamano SOAP (Simple Object Access Protocol) e REST (Representational State Transfer).
Vediamo le loro caratteristiche:
-
Web Service SOAP: Utilizza come Medium l'HTTP (nello specifico le chiamate POST) e come Formato esclusivo l'XML.
-
Web Service REST: Utilizza come Medium l'HTTP (con i metodi POST, GET, PUT, DELETE) e supporta vari formati come XML, JSON o semplice testo (Text).
Cosa sono i WSDL e l'UDDI?
Ora che hai rinfrescato il concetto di Web Service, introduciamo due termini fondamentali legati al mondo SOAP.
La sigla WSDL sta per Web Services Description Language. Si tratta di un'interfaccia XML che descrive in modo dettagliato le funzionalità offerte da un determinato Web Service (i parametri richiesti, il tipo di servizio fornito, ecc.).
Come ultima cosa, non ci resta che introdurre l'UDDI (Universal Description Discovery and Integration). Immaginalo come una grande directory (un elenco o un registro) dove i Service Provider pubblicano i propri Web Service utilizzando proprio i file WSDL. Il Service Consumer (il nostro Client) interroga questo registro per trovare il servizio di cui ha bisogno. Possiamo quindi affermare che l'UDDI è uno standard XML usato per pubblicare e localizzare i Web Service.
L’universo dei Web Service: I dettagli tecnici di SOAP e REST
Torniamo ora ai nostri due protagonisti principali e analizziamoli sotto un profilo più tecnico.
SOAP (Simple Object Access Protocol)
Questo protocollo stabilisce una serie di regole rigide grazie alle quali Client e Provider possono dialogare. La comunicazione avviene rigorosamente in formato XML.
La struttura di un messaggio SOAP è molto specifica ed è formata da:
-
Envelope (Busta): È il contenitore principale del messaggio.
-
Header (Intestazione): È opzionale e contiene informazioni come quelle di routing o di autenticazione.
-
Body (Corpo): È il contenuto effettivo del messaggio (ad esempio, i dati dei voli che il Client ha richiesto al Server).
RESTful (Representational State Transfer)
Questo secondo approccio architetturale è oggi molto più popolare di SOAP, grazie soprattutto alla sua semplicità e flessibilità. Affinché un Web Service sia considerato RESTful, deve soddisfare alcuni principi fondamentali:
-
Uniform Interface (Interfaccia Uniforme): Le risorse devono essere identificate in modo univoco tramite URI e accessibili tramite HTTP.
-
Stateless (Senza Stato): Ogni richiesta tra Client e Provider è indipendente. Il server non memorizza alcuna informazione (stato) delle comunicazioni precedenti.
-
Cacheable (Memorizzabile in Cache): I dati inviati dal server contengono informazioni che specificano se il Client può memorizzarli in cache per richieste future (usando header come Cache-Control).
-
Layered System (Sistema a Livelli): Tra Client e Server possono esistere livelli multipli (come proxy o load balancer) senza che il Client debba esserne consapevole.
-
Code on Demand (Codice su Richiesta - Opzionale): La possibilità per il server di inviare script eseguibili lato Client.
Le basi dell'interfaccia REST: Resources, URI e HTTP
Vediamo più nel dettaglio i concetti chiave su cui si fonda REST:
1. Resources (Risorse)
Si tratta dei dati oggetto della comunicazione. Immaginiamo il database di un'azienda: le risorse potrebbero essere le anagrafiche degli impiegati, le diverse Direzioni aziendali o le filiali geografiche. In REST, ogni informazione rilevante è una risorsa e viene identificata da un nome.
2. URI (Uniform Resource Identifier)
Attraverso l'URI si accede in modo univoco a una specifica risorsa. Tornando all'esempio aziendale, avremo un dominio (es. nomedominio.com) e dei percorsi specifici:
-
Elenco degli impiegati: [nomedominio.com/impiegati](https://nomedominio.com/impiegati)
-
Informazioni di un singolo impiegato: [nomedominio.com/impiegati/](https://nomedominio.com/impiegati/){nome}
-
Elenco delle Direzioni: [nomedominio.com/direzioni](https://nomedominio.com/direzioni)
-
Impiegati di una determinata direzione: [nomedominio.com/Personale/impiegati](https://nomedominio.com/Personale/impiegati)
3. I Metodi HTTP e il sistema CRUD
REST sfrutta i verbi (o metodi) nativi del protocollo HTTP per creare un sistema CRUD, acronimo che definisce le quattro operazioni base di gestione dei dati:
-
C = CREATE = Metodo POST (crea una nuova risorsa)
-
R = READ = Metodo GET (legge/richiede una risorsa)
-
U = UPDATE = Metodo PUT (aggiorna una risorsa)
-
D = DELETE = Metodo DELETE (elimina una risorsa)
Ad esempio, usando il metodo GET, possiamo ottenere la lista degli impiegati semplicemente chiamando l'URL: GET [http://www.nomedominio.com/impiegati](http://www.nomedominio.com/impiegati)
In sintesi: Qual è la differenza tra SOAP e REST?
In un Web Service RESTful, ogni risorsa viene identificata attraverso un Nome e un URI, e manipolata usando i metodi HTTP standard con rappresentazioni leggere come JSON o XML.
La grande differenza pratica è che in SOAP, per reperire una risorsa, è necessario costruire una complessa "busta" (Envelope) XML. In REST, spesso basta un semplice link (tramite metodo GET) per ottenere il risultato desiderato. Ecco perché oggi REST è la scelta dominante nel mondo dello sviluppo web.
Questo articolo è preso da un Guest Post di Walter Livio Bollini. Laureato in Matematica/Informatica e con un Master in tecnologia digitale, è specializzato in linguaggio PHP. È un esperto del Web e dello sviluppo di applicazioni, in particolare piattaforme e-commerce. Si occupa inoltre di campagne di Web Marketing, newsletter e gestione di social network. Scopri di più sul suo sito personale: liviobollini.it.


