REST VS. SOAP

L’approccio REST viene spesso contrapposto al suo predecessore, l’approccio SOAP, molto utilizzato fino a qualche anno fa per la realizzazione di Web Service. L’obiettivo di queste tecnologie è pressoché identico, l’adozione del web come piattaforma di elaborazione, tuttavia le soluzioni proposte sono estremamente differenti.

Iniziamo considerando il soggetto alla base dei due approcci: REST propone una visione del web incentrata sul concetto di risorsa, SOAP al contrario mette in risalto il concetto di servizio.

  • Un Web Service RESTful espone una serie di risorse sulle quali il client può operare una serie di operazioni (mediante protocollo HTTP);
  • Un Web Service SOAP espone un insieme di metodi richiamabili da remoto (mediante protocollo SOAP).

Il protocollo SOAP (acronimo di Simple Object Access Protocol) definisce una struttura dati per lo scambio di messaggi. In questo contesto il protocollo HTTP viene utilizzato come protocollo di trasporto, tuttavia SOAP non è affatto vincolato ad esso. È infatti possibile utilizzare il protocollo SOAP in associazione ad altri protocolli di trasporto. SOAP non sfrutta le specifiche HTTP in tema di sicurezza o di indirizzamento, per affrontare tali temi sono stata definiti standard assetanti (WS-Security e WS-Addressing). REST al contrario utilizza tutti gli strumenti offerti dal protocollo HTTP.

Da una parte il protocollo SOAP deriva dall’adattamento di tecnologie nate al di fuori del web, basate su chiamate a procedure remote (come DCOM, CORBA, eccetera), adattate al fine di funzionare con le tecnologie utilizzate in ambito web. Lo stesso uso dei WSDL (Web Service Description Language) per la definizione delle interfacce di servizio rappresenta un ulteriore evidenza del tentativo di adattare al web l’approccio di interoperabilità basato sulle chiamate remote. Allo stesso modo l’uso dei WSDL favorisce la creazione semi-automatica dei client in un determinato linguaggio di programmazione.

Dall’altra, REST non prevede alcuna modalità esplicita per descrivere l’interazione tra il server e il client, le operazioni sono rese implicite dall’uso del protocollo HTTP. Simile al WSDL è il WADL (Web Application Definition Language), un’applicazione XML per definire risorse, operazioni ed eccezioni previste da un Web Service di tipo REST. WADL è stato sottoposto al W3C per la standardizzazione nel 2009, tuttavia ad oggi non ci sono piani per la sua approvazione. Esso non ha comunque ricevuto un’accoglienza positiva da parte della comunità REST, a causa della visione statica che impone al Web Server, in chiara contraddizione con il principio HATEOAS.

In conclusione è chiaro come i web server basati su SOAP costituiscano un’infrastruttura per molti aspetti prolissa e complessa, posta al di sopra del web per fare cose che il web è già in grado di fare. Tuttavia essa definisce uno standard che per certi versi è indipendente dal web.