Considerate queste aree, posso dare una panoramica approssimativa, ma non posso trarre le conclusioni per voi. Esistono due aree principali in cui i due protocolli differiscono:
- Formato messaggio
- Scoperta del servizio
Il formato del messaggio è più facile da capire. L'imballaggio SOAP per entrambe le richieste e le risposte è abbastanza 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 penalizzazione della scalabilità del sistema. Quanto dipende dal livello di elaborazione SOAP nello stack.
L'individuazione dei servizi è quella in cui probabilmente avrai più problemi. REST per sua natura fornisce end point prevedibili e il contenuto della richiesta è una semplice richiesta HTTP. Il vantaggio è che non vi è alcun sovraccarico aggiuntivo e gli utenti finali possono indovinare praticamente come fare ciò di cui hanno bisogno una volta che comprendono la struttura dell'URL del proprio sito. Naturalmente, le persone ingenue della sicurezza lo vedranno come una debolezza. Dopotutto, con SOAP, devi utilizzare un WSDL per sapere quali sono gli endpoint. Ovviamente, con SOAP hai ricevuto l'intero formato del messaggio in modo da poter effettuare attacchi più mirati.
Suddiviso in base alle categorie che hai dato:
Sicurezza
Né è intrinsecamente più sicuro dell'altro. Utilizza i buoni principi di sicurezza:
- Cripta 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 oscurità! = sicurezza.
Performance
Sia le prestazioni non elaborate che la scalabilità andranno a REST a causa della richiesta che segue i semplici protocolli HTTP. La maggior parte degli stack SOAP utilizza l'analisi SAX (analisi basata su eventi) che migliora notevolmente la scalabilità degli stack SOAP, ma il sovraccarico ha un impatto misurabile. SOAP ha il normale overhead di elaborazione HTTP oltre al sovraccarico dell'analisi XML. REST ha solo l'overhead di elaborazione HTTP.
Complessità
Dal punto di vista del sistema, REST vince. Ci sono meno parti mobili, una catena di richieste più snella, ecc. Ciò significa che è più semplice renderlo affidabile.
Dal punto di vista del programmatore, SOAP può vincere se l'IDE o il framework che stai utilizzando fornisce un buon supporto. Essenzialmente, con REST l'onere è su di te per eseguire il lavoro di pre-elaborazione (autenticazione / autorizzazione / ecc.) Mentre con SOAP molto 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 si sentono a disagio. Hanno letto alcuni articoli di settore che denunciano la sicurezza di REST vs. SOAP, ecc. In conclusione, nessuno dei due metodi garantisce la sicurezza. Sta a te assicurarti che l'applicazione sia sicura come deve essere. Ovviamente, un'applicazione web sociale non richiede (o desidera) tanta sicurezza quanto un sistema bancario o governativo. Molti stack SOAP includono processori che puoi collegare per fornire una parvenza di sicurezza, ma è comunque tua responsabilità cercarli e metterli a posto.