SOAP ( Simple Object Access Protocol ) und REST ( Representation State Transfer ) sind beide auf ihre Weise wunderschön. Also vergleiche ich sie nicht. Stattdessen versuche ich, das Bild darzustellen, wenn ich lieber REST und SOAP verwendet habe.
Was ist Nutzlast?
Wenn Daten über das Internet gesendet werden, enthält jede übertragene Einheit sowohl Header-Informationen als auch die tatsächlich gesendeten Daten. Der Header identifiziert die Quelle und das Ziel des Pakets, während die tatsächlichen Daten als Nutzdaten bezeichnet werden . Im Allgemeinen sind die Nutzdaten die Daten, die im Auftrag einer Anwendung übertragen werden, und die vom Zielsystem empfangenen Daten.
Jetzt muss ich zum Beispiel ein Telegramm senden und wir alle wissen, dass die Kosten des Telegramms von einigen Wörtern abhängen.
Sagen Sie mir also unter den unten genannten zwei Nachrichten, welche ist billiger zu senden?
<name>Arin</name>
oder
"name": "Arin"
Ich weiß, dass Ihre Antwort die zweite sein wird, obwohl beide dieselbe Nachricht darstellen. Die zweite ist in Bezug auf die Kosten billiger.
Ich versuche zu sagen, dass das Senden von Daten über das Netzwerk im JSON-Format in Bezug auf die Nutzlast billiger ist als das Senden im XML-Format .
Hier ist der erste Vorteil oder die ersten Vorteile von REST gegenüber SOAP . SOAP unterstützt nur XML, aber REST unterstützt andere Formate wie Text, JSON, XML usw. Und wir wissen bereits, wenn wir Json verwenden, sind wir in Bezug auf die Nutzlast definitiv an einem besseren Ort.
Jetzt unterstützt SOAP das einzige XML, hat aber auch seine Vorteile.
Ja wirklich! Wie?
SOAP setzt auf drei Arten auf XML Envelope - das definiert, was in der Nachricht enthalten ist und wie sie verarbeitet wird.
Eine Reihe von Codierungsregeln für Datentypen und schließlich das Layout der gesammelten Prozeduraufrufe und -antworten.
Dieser Umschlag wird über einen Transport (HTTP / HTTPS) gesendet, und ein RPC (Remote Procedure Call) wird ausgeführt, und der Umschlag wird mit Informationen in einem XML-formatierten Dokument zurückgegeben.
Der wichtige Punkt ist, dass einer der Vorteile von SOAP die Verwendung des „generischen“ Transports ist , REST jedoch HTTP / HTTPS verwendet . SOAP kann fast jeden Transport zum Senden der Anfrage verwenden, REST jedoch nicht. Hier haben wir also den Vorteil, SOAP zu verwenden.
Wie ich bereits im obigen Absatz erwähnt habe, verwendet REST HTTP / HTTPS. Gehen Sie also etwas tiefer in diese Wörter ein.
Wenn es sich um REST über HTTP handelt, werden alle angewendeten Sicherheitsmaßnahmen für HTTP vererbt. Dies wird als Sicherheit auf Transportebene bezeichnet und sichert Nachrichten nur, während sie sich im Kabel befinden. Sobald Sie sie auf der anderen Seite zugestellt haben, wissen Sie es nicht Wie viele Phasen muss es durchlaufen, bevor der tatsächliche Punkt erreicht ist, an dem die Daten verarbeitet werden? Und natürlich könnten all diese Phasen etwas anderes als HTTP verwenden. Ruhe ist also nicht ganz sicherer, oder?
SOAP unterstützt SSL ebenso wie REST und WS-Security, wodurch einige Sicherheitsfunktionen für Unternehmen hinzugefügt werden. WS-Security bietet Schutz von der Erstellung der Nachricht bis zum Verbrauch . Für die Sicherheit auf Transportebene können wir also eine Lücke finden, die mit WS-Security verhindert werden kann.
Abgesehen davon, da REST durch sein HTTP-Protokoll eingeschränkt ist , ist seine Transaktionsunterstützung weder ACID-konform noch kann es eine zweiphasige Festschreibung über verteilte transnationale Ressourcen hinweg ermöglichen.
SOAP bietet jedoch umfassende Unterstützung sowohl für das ACID-basierte Transaktionsmanagement für kurzlebige Transaktionen als auch für das kompensationsbasierte Transaktionsmanagement für langfristige Transaktionen. Es unterstützt auch das zweiphasige Festschreiben über verteilte Ressourcen hinweg .
Ich ziehe keine Schlussfolgerung, aber ich werde einen SOAP-basierten Webdienst bevorzugen, während Sicherheit, Transaktion usw. die Hauptanliegen sind.
Hier ist das "Java EE 6 Tutorial", in dem gesagt wurde, dass ein RESTful-Design angemessen sein kann, wenn die folgenden Bedingungen erfüllt sind . Guck mal.
Ich hoffe, Sie haben es genossen, meine Antwort zu lesen.