SOAP ( Simple Object Access Protocol ) e REST ( Representation State Transfer ) sono entrambi meravigliosi a modo loro. Quindi non li sto confrontando. Invece, sto cercando di rappresentare l'immagine, quando ho preferito usare REST e quando SOAP.
Cos'è il payload?
Quando i dati vengono inviati su Internet, ogni unità trasmessa include sia le informazioni dell'intestazione sia i dati effettivi inviati. L'intestazione identifica l'origine e la destinazione del pacchetto, mentre i dati effettivi vengono definiti payload . In generale, il payload è costituito dai dati trasportati per conto di un'applicazione e dai dati ricevuti dal sistema di destinazione.
Ora, ad esempio, devo inviare un telegramma e sappiamo tutti che il costo del telegramma dipenderà da alcune parole.
Quindi dimmi tra i due citati di seguito, quale è più economico da inviare?
<name>Arin</name>
o
"name": "Arin"
So che la tua risposta sarà la seconda, sebbene entrambe rappresentino lo stesso messaggio, la seconda è più economica in termini di costi.
Quindi sto cercando di dire che, l' invio di dati in rete in formato JSON è più economico rispetto all'invio in formato XML per quanto riguarda il payload .
Ecco i primi vantaggi o vantaggi di REST su SOAP . SOAP supporta solo XML, ma REST supporta formati diversi come testo, JSON, XML, ecc. E sappiamo già che, se utilizziamo Json, saremo sicuramente in una posizione migliore per quanto riguarda il payload.
Ora, SOAP supporta l'unico XML, ma ha anche i suoi vantaggi.
Veramente! Come?
SOAP si basa su XML in tre modi Envelope: questo definisce ciò che è nel messaggio e come elaborarlo.
Un insieme di regole di codifica per i tipi di dati e infine il layout delle chiamate di procedura e delle risposte raccolte.
Questa busta viene inviata tramite un trasporto (HTTP / HTTPS) e viene eseguito un RPC (Remote Procedure Call) e la busta viene restituita con le informazioni in un documento in formato XML.
Il punto importante è che uno dei vantaggi di SOAP è l'uso del trasporto "generico", ma REST utilizza HTTP / HTTPS . SOAP può utilizzare quasi tutti i mezzi di trasporto per inviare la richiesta, ma REST no. Quindi qui abbiamo il vantaggio di usare SOAP.
Come ho già accennato nel paragrafo precedente "REST utilizza HTTP / HTTPS" , quindi approfondisci un po 'queste parole.
Quando parliamo di REST su HTTP, tutte le misure di sicurezza applicate HTTP vengono ereditate e questo è noto come sicurezza a livello di trasporto e protegge i messaggi solo mentre si trova all'interno del filo ma una volta che lo hai consegnato dall'altra parte non lo sai quante fasi dovrà passare prima di raggiungere il punto reale in cui i dati verranno elaborati. E, naturalmente, tutte quelle fasi potrebbero usare qualcosa di diverso rispetto a HTTP. Quindi il riposo non è completamente più sicuro, giusto?
Ma SOAP supporta SSL proprio come REST , inoltre supporta anche WS-Security che aggiunge alcune funzionalità di sicurezza aziendale. WS-Security offre protezione dalla creazione del messaggio al suo consumo . Quindi, per la sicurezza a livello di trasporto qualunque scappatoia abbiamo trovato che può essere evitato usando WS-Security.
A parte questo, poiché REST è limitato dal suo protocollo HTTP, quindi il suo supporto alle transazioni non è né conforme ACID né può fornire commit in due fasi su risorse transnazionali distribuite.
Ma SOAP ha un supporto completo sia per la gestione delle transazioni basata su ACID per transazioni di breve durata sia per la gestione delle transazioni basata sulla compensazione per transazioni di lunga durata. Supporta inoltre il commit in due fasi tra risorse distribuite .
Non sto tracciando alcuna conclusione, ma preferirò il servizio web basato su SOAP mentre la sicurezza, le transazioni, ecc. Sono le preoccupazioni principali.
Ecco il "Tutorial Java EE 6" in cui hanno affermato che un progetto RESTful può essere appropriato quando sono soddisfatte le seguenti condizioni . Dare un'occhiata.
Spero ti sia piaciuto leggere la mia risposta.