SOAP e REST non possono essere confrontati direttamente, poiché il primo è un protocollo e il secondo è uno stile architetturale.
Questa è probabilmente una delle fonti di confusione più comuni, in quanto chiunque tende a chiamare REST qualsiasi API HTTP che non è SOAP.
Ad ogni modo vediamo di trovare le principali caratteristiche dei due servizi:
La differenza principale tra SOAP e REST è il grado di accoppiamento tra implementazioni client e server.
Un client SOAP funziona come un'applicazione desktop personalizzata, strettamente associata al server. C'è un contratto rigido tra il client e il server e non funziona più nulla se uno di questi cambia.
Sono necessari aggiornamenti costanti dopo qualsiasi modifica, ma è più facile accertare se il protocollo comunicativo viene seguito.
Un client REST è più simile a un browser. È un client generico che utilizza una interfaccia con metodi standardizzati che restituisce dati in formati più o meno standard.
Non si violano gli standard del protocollo creando metodi extra. Se fatto bene, pur senza un protocollo definito in termini di specifici UDDI cone nel caso di SOAP, la comunicazione regge anche senza il ricorso a formati standard.
Si suppone che un client entri in un servizio REST con una conoscenza nulla dell'API, ad eccezione del punto di ingresso e del tipo di dato restituito.
In SOAP, il client ha bisogno di conoscere anticipatamente e nel dettaglio tutto quello che userà altrimenti non sarà possibile neanche iniziare l'interazione.
REST è indipendente dal protocollo. Non è accoppiato necessariamente con HTTP. E' possibile seguire, ad esempio un link ftp da un sito web. Un'applicazione REST può utilizzare qualsiasi protocollo per il quale esiste uno schema standardizzato di richiesta URI.
Su questa pagina possono essere trovati approfondimenti su cosa è un servizio REST (in inglese)