SOAP o REST
SOAP o REST?
Nello sviluppo di applicazioni Web capita spesso di dover esporre dei servizi web (web services) che clienti, utenti, fornitori possono consumare. Molte applicazioni Android o Iphone utilizzano “webservices” per il loro funzionamento. Quale architettura scegliere? REST (Rapresentional State Transfer) o SOAP (Simple Object Access Protocol). La risposta è sempre : Dipende. Dipende dal tipo di applicazione. In rete si trovano molte risorse utili al dibattito.
Perchè usare SOAP?
- Sia SOAP che REST possono usare il protocollo SSL. Soap ha il supporto per WS-Security (WSS). Ha un supporto di sicurezza che è utile a livello “enterprise” non usato nelle applicazioni standard su web.
- REST supporta le transazioni ma non è “ACID compliant”. Per fortuna le transazioni “Acid compilant” non hanno molto senso nelle transazioni internet.
- REST non ha il supporto per i messaggi di sistema e lascia al client la gestione dei fallimenti sulle comunicazioni. SOAP ha invece il supporto nativo per la gestione dei fallimenti sulle comunicazioni implementando lo standard WS-messaging.
Perchè usare REST?
- REST è usa lo standard HTTP. E’ più semplice e meno verboso di SOAP.
- Con REST possiamo usare diversi formati di dati (Json, XML) mentre con SOAP possiamo usare solo XML.
- REST è più scalabile perchè può essere messo in cache. SOAP no.
- I grandi player web usano REST. Yahoo ad esempio usa REST per tutte le sue API. Dal 2006 Google ha deprecato l’uso delle API soap in favore delle api REST.
In conclusione
La scelta come sempre dipende da quale utilizzo si deve fare dell’architettura. Se ho ad esempio un’applicazione Android o Iphone che comunica con i servizi della mia banca userò sicuramente SOAP invece che REST. Tutte le funzionalità che abbiamo descritto sopra sono necessarie per eseguire una transazione bancaria, Sicurezza, transazioni ACID e un modo sicuro di gestire i fallimenti nelle comunicazioni. Se ad esempio voglio trasferire dei soldi da un conto ad un altro devo essere sicuro che l’operazione sia terminata o fallita. Non posso limitarmi a ritentare. L’esito potrebbe essere catastrofico perchè trasferirei due volte i soldi da un conto ad un altro.