REST vs SOAP, come funzionano i Web Services?

I vantaggi e gli svantaggi offerti da queste metodologie



Simple Object Access Protocol (SOAP) e Representational State Transfer (REST) rappresentano due risposte alla stessa domanda: come accedere ai Web services?

SOAP, originariamente sviluppato dalla Microsoft, è un protocollo di accesso ai servizi Web basato su standard che esistono da tempo e che godono di tutti i vantaggi tipici di un utilizzo a lungo termine.

REST, invece, è più recente e cerca di risolvere le criticità del SOAP, fornendo un metodo semplice per accedere ai servizi Web.

Entrambe le tecniche presentano pro e contro, rendendo l’una o l’altra più facile da usare e quindi da preferire in determinate situazioni.

In questo articolo analizzeremo entrambe le metodologie e metteremo a confronto i vantaggi e gli svantaggi offerti.

Cos’è il SOAP

Il Simple Object Access Protocol (SOAP) è un protocollo per l’implementazione di servizi Web. Presenta una struttura ed uno schema ben preciso e si basa sull’XML, attraverso cui avviene lo scambio dei dati e la gestione delle risposte.

SOAP dispone di linee guida che permettono la comunicazione via Internet tra due programmi, anche se questi impiegano piattaforme, tecnologie e linguaggi di programmazione diversi. Come protocollo, SOAP presenta quattro componenti di base:

  • Linee guida per il contenuto e l’elaborazione di un messaggio.
  • Linee guida di codifica per dati application-defined.
  • Linee guida per le chiamate di procedura remota (RPC).
  • Linee guida per lo scambio di messaggi attraverso determinati protocolli.

Tra i principali vantaggi offerti da SOAP, troviamo in particolare:

  • Neutralità di linguaggio: SOAP può essere sviluppato con qualsiasi linguaggio.
  • Inter-operabilità: SOAP può essere implementato in qualsiasi lingua e può essere eseguito in qualsiasi piattaforma.
  • Semplicità: i messaggi SOAP sono in un formato XML molto semplice.
  • Scalabilità: grazie all’utilizzo del protocollo HTTP per il trasporto.

Perché utilizzare SOAP e non REST?

Ad oggi, SOAP continua ad essere utilizzato per i Web services a livello aziendale che richiedono elevata sicurezza e transazioni complesse. Le API per i servizi finanziari, i gateway di pagamento, il software CRM, la gestione dell’identità e i servizi di telecomunicazione sono esempi comuni di SOAP.

Il supporto del sistema legacy è un altro motivo a sostegno dell’utilizzo di SOAP. I servizi web più popolari e in circolazione da diverso tempo presentano solitamente molti utenti che ancora si connettono ai loro servizi attraverso le API SOAP, leader del mercato prima dell’introduzione di REST. Salesforce, ad esempio, fornisce sia un SOAP che un’API REST in modo che ogni sviluppatore possa integrare Salesforce con la propria piattaforma, nel modo che meglio gli si addice.

Infine, SOAP può rappresentare una soluzione eccellente in situazioni in cui non è possibile utilizzare REST. Anche se ad oggi la maggior parte dei fornitori di servizi web desidera scambiare richieste e risposte senza stato (“stateless”), in alcuni casi potrebbe essere necessario elaborare operazioni con stato (“stateful”). Questo accade, per esempio, nel caso di bonifici bancari.

Cos’è il REST

REST sta a Representational State Trasfer ed è uno stile di architettura impiegato nella progettazione di applicazioni network. Come indicato dal suo stesso nome, REST rappresenta il trasferimento di stato di determinate risorse e, a differenza dei protocolli da cui si distingue, REST si occupa di specificare i requisiti strutturali che i messaggi devono rispettare.

L’idea alla base di REST è che, anziché utilizzare meccanismi complessi come CORBA, RPC o SOAP per connettere due macchine, è più un semplice impiegare il protocollo HTTP per effettuare le chiamate tra di esse.

REST è considerata quindi un’alternativa semplice e leggera a meccanismi come l’RPC (Remote Procedure Calls) ed i Web Services (SOAP, WSDL, ecc.).

Tuttavia, nonostante la sua semplicità, REST è completamente funzionale: fondamentalmente tutto quello che è possibile fare coi Web Services può essere realizzato allo stesso modo con l’architettura RESTful.

Perché utilizzare REST?

REST rappresenta da diversi anni la soluzione più popolare tra gli sviluppatori per la costruzione di API pubbliche. È infatti possibile trovare molti esempi su Internet, soprattutto perché tutti i principali social media forniscono API REST affinché gli sviluppatori possano integrare perfettamente le loro applicazioni con la piattaforma. Queste API pubbliche sono dotate inoltre di una documentazione dettagliata in cui è possibile ottenere tutte le informazioni necessarie per estrarre i dati attraverso le API. Twitter, ad esempio, possiede un certo numero di API REST pubbliche, ognuna con scopi diversi, come un’API per i messaggi diretti – con la quale è possibile inviare messaggi personalizzati -, e un’API Ad, con la quale è possibile gestire e programmare le campagne pubblicitarie.

REST rappresenta quasi sempre la migliore soluzione per le API web-based, in quanto rende i dati disponibili come risorse anziché come servizi, che è invece il modo in cui opera SOAP. Inoltre, REST eredita le operazioni HTTP, il che significa che è possibile effettuare semplici chiamate API utilizzando i ben noti verbi HTTP come GET, POST, PUT e DELETE.

REST vs SOAP

Nella scelta della soluzione migliore è importante tenere a mente non solo i vantaggi e gli svantaggi di ciascuna, ma anche comprendere quale web services può soddisfare al meglio le proprie esigenze.

Va inoltre sottolineato che spesso la scelta tra SOAP e REST è in realtà forzata: molti servizi Web, infatti, supportano solo uno o l’altro.

Vediamo adesso a confronto i principali vantaggi offerti da SOAP e REST.

Per quanto riguarda SOAP:

  • È indipendente dal linguaggio, dalla piattaforma e dal trasporto, al contrario di REST che richiede l’uso di HTTP.
  • È standardizzato.
  • Funziona molto bene in ambiti aziendali.
  • Presenta moduli di sicurezza incorporati, aumentandone la sicurezza.
  • Gestione degli errori integrata

REST, invece, è generalmente più facile da utilizzare, oltre ad essere più flessibile. Rispetto a SOAP presenta i seguenti vantaggi:

  • Non sono necessari strumenti costosi per interagire con il servizio Web.
  • Curva di apprendimento più piccola.
  • Efficiente, poiché mentre SOAP utilizza XML per tutti i messaggi, REST può utilizzare formati di messaggio più piccoli.
  • È veloce.
  • Più vicino ad altre tecnologie Web nella filosofia di progettazione.
Prenota un appuntamento