Date queste aree, posso fornire una panoramica generale, ma non posso trarre le tue conclusioni per te. Esistono due aree principali in cui i due protocolli differiscono:
- Formato del messaggio
- Rilevazione del servizio
Il formato del messaggio è più facile da capire. Il packaging SOAP sia per le richieste che per le risposte è piuttosto pesante. C'è la busta SOAP che contiene sia un'intestazione che una sezione del corpo. L'intestazione può essere utilizzata da diversi filtri nella catena di richieste per eseguire una sorta di identificazione, autorizzazione, ecc. Tuttavia, XML è costoso da analizzare, il che comporta una certa penalità per la scalabilità del sistema. Quanto dipende dal livello di elaborazione SOAP nel tuo stack.
Il servizio di rilevamento è dove probabilmente avrai più contese. REST per sua stessa natura fornisce end point prevedibili e il contenuto della richiesta è una semplice richiesta HTTP. Il vantaggio è che non ci sono costi aggiuntivi aggiuntivi e gli utenti finali possono praticamente indovinare come fare ciò di cui hanno bisogno dopo aver compreso la struttura dell'URL del tuo sito. Ovviamente, le persone ingenue attente alla sicurezza lo vedranno come un punto debole. Dopotutto, con SOAP, devi consumare un WSDL per sapere quali sono gli endpoint. Naturalmente, con SOAP ti è stato dato l'intero formato del messaggio in modo da poter effettuare attacchi più mirati.
Suddiviso per le categorie che hai dato:
Sicurezza
Nessuno dei due è intrinsecamente più sicuro dell'altro. Utilizzare buoni principi di sicurezza:
- Crittografa le comunicazioni
- Assicurati di autenticare e autorizzare gli utenti prima dell'elaborazione
- Buone abitudini di codifica per evitare attacchi diretti
- E questa è solo la breve lista.
Ricorda l'oscurità! = Sicurezza.
Prestazione
Sia le prestazioni non elaborate che la scalabilità andranno a REST a causa della richiesta che segue semplici protocolli HTTP. La maggior parte degli stack SOAP utilizza l'analisi SAX (analisi basata sugli eventi) che migliora notevolmente la scalabilità degli stack SOAP, ma si verifica un impatto misurabile sull'overhead. SOAP ha il normale sovraccarico di elaborazione HTTP oltre al sovraccarico di analisi XML. REST ha solo il sovraccarico di elaborazione HTTP.
Complessità
Dal punto di vista del sistema, REST vince. Ci sono meno parti mobili, una catena di richiesta più snella, ecc. Ciò significa che è più facile renderlo affidabile.
Dal punto di vista del programmatore, SOAP può vincere se l'IDE o il framework in uso fornisce un buon supporto. In sostanza, con REST spetta a te eseguire il lavoro di preelaborazione (autenticazione / autorizzazione / ecc.) Mentre con SOAP gran parte di ciò può essere realizzato con una catena di elaborazione collegabile.
La mia preferenza
Sono molto a mio agio con le richieste HTTP e so come funziona il web. Di conseguenza, l'approccio REST è più preferibile per me. Tuttavia, so che alcuni dei miei clienti non si sentono a proprio agio con questo. Hanno letto alcuni articoli del settore che denunciano la sicurezza di REST vs. SOAP, ecc. In conclusione, nessuno dei due approcci garantisce la sicurezza. Sta a te assicurarti che l'applicazione sia sicura come deve essere. Ovviamente, un'applicazione di social web non richiede (o desidera) la stessa sicurezza di un sistema bancario o governativo. Molti stack SOAP includono processori che è possibile collegare per fornire una parvenza di sicurezza, ma è comunque responsabilità dell'utente cercarli e metterli in atto.