SOAP (Simple Object Access Protocol) und REST (Representation State Transfer) sind beide auf ihre eigene Weise schön. Also vergleiche ich sie nicht. Stattdessen versuche ich das Bild darzustellen, wann ich REST und wann SOAP bevorzuge.
Was ist Nutzlast?
Wenn Daten über das Internet gesendet werden, enthält jede übertragene Einheit sowohl Kopfzeileninformationen als auch die tatsächlichen Daten, die gesendet werden. Der Header identifiziert die Quelle und das Ziel des Pakets, während die tatsächlichen Daten als Nutzlast bezeichnet werden. Im Allgemeinen handelt es sich bei der Nutzlast um 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 Worten abhängen werden.
Sag mir also zwischen den unten genannten beiden Nachrichten, welche ist günstiger zu senden?
Arin
oder
"name": "Arin"
Ich weiß, deine Antwort wird die zweite sein, obwohl beide dasselbe Nachricht repräsentieren, ist die zweite hinsichtlich der Kosten günstiger.
Also versuche ich zu sagen, dass das Senden von Daten über das Netzwerk im JSON-Format billiger ist als das Senden im XML-Format bezüglich der Nutzlast.
Hier ist der erste Vorteil oder die Vorteile von REST gegenüber SOAP. SOAP unterstützt nur XML, aber REST unterstützt verschiedene Formate wie Text, JSON, XML usw. Und wir wissen bereits, dass wir uns besser positionieren, wenn wir Json verwenden, bezüglich der Nutzlast.
Jetzt unterstützt SOAP nur XML, aber es hat auch seine Vorteile.
Wirklich! Wie?
SOAP basiert auf XML in drei Weisen Umschlag – der definiert, was sich in der Nachricht befindet und wie sie verarbeitet werden soll.
Eine Reihe von Kodierungsregeln für Datentypen, und schließlich das Layout der Prozeduraufrufe und gesammelten Antworten.
Dieser Umschlag wird über einen Transport (HTTP/HTTPS) gesendet, und ein RPC (Remote Procedure Call) wird ausgeführt, und der Umschlag kehrt mit Informationen in einem XML-formatierten Dokument zurück.
Der wichtige Punkt ist, dass einer der Vorteile von SOAP die Verwendung des „generischen“ Transports ist, aber REST verwendet HTTP/HTTPS. SOAP kann fast jeden Transport verwenden, um die Anfrage zu senden, aber REST kann das nicht. Also hier haben wir einen Vorteil der Verwendung von SOAP.
Wie ich bereits im vorherigen Abschnitt erwähnt habe „REST verwendet HTTP/HTTPS“, gehen wir etwas tiefer auf diese Worte ein.
Wenn wir über REST über HTTP sprechen, werden alle Sicherheitsmaßnahmen angewendet, die HTTP übernommen hat, und dies wird als Transportsicherheit bezeichnet und sie sichert Nachrichten nur, solange sie innerhalb des Drahtes sind, aber sobald sie auf der anderen Seite angekommen sind, wissen Sie nicht, wie viele Stufen sie durchlaufen müssen, bevor sie den eigentlichen Punkt erreichen, an dem die Daten verarbeitet werden. Und natürlich könnten all diese Stufen etwas anderes als HTTP verwenden. Also Rest ist nicht komplett sicher, oder?
Aber SOAP unterstützt SSL genau wie REST zusätzlich unterstützt es auch die WS-Sicherheit, die einige unternehmensspezifische Sicherheitsfunktionen hinzufügt. WS-Sicherheit bietet Schutz von der Erstellung der Nachricht bis zu ihrer Verwendung. Für die Transportsicherheit können alle Schwachstellen, die wir finden, durch die Verwendung von WS-Sicherheit verhindert werden.
Abgesehen davon, da REST durch sein HTTP-Protokoll begrenzt ist, ist seine Transaktionsunterstützung weder ACID-konform noch kann sie eine Zwei-Phasen-Commit über verteilte transnationale Ressourcen bieten.
Aber SOAP hat umfassende Unterstützung sowohl für ACID-basiertes Transaktionsmanagement für kurzlebige Transaktionen als auch für Kompensationsbasiertes Transaktionsmanagement für lang laufende Transaktionen. Es unterstützt auch Zwei-Phasen-Commit über verteilte Ressourcen.
Ich ziehe keine Schlussfolgerungen, aber ich würde eine auf SOAP-basierte Webservice bevorzugen, wenn Sicherheit, Transaktion usw. die Hauptbedenken sind.
Hier ist "Das Java EE 6 Tutorial", wo sie sagten Ein RESTful-Design kann angemessen sein, wenn folgende Bedingungen erfüllt sind. Schau es dir an.
Ich hoffe, du hattest Spaß beim Lesen meiner Antwort.