Beantwortung der 2012 aktualisierten Frage (durch das zweite Kopfgeld) und Überprüfung der heutigen Ergebnisse (andere Antworten).
SOAP, Vor- und Nachteile
Über SOAP 1.2, Vor- und Nachteile im Vergleich zu "REST" ... Nun, seit 2007 können
Sie REST-Webdienste mit WSDL und unter Verwendung des SOAP-Protokolls beschreiben ... Das heißt, wenn Sie etwas härter arbeiten, alle W3C-Standards von Der Webdienst-Protokollstapel kann REST sein !
Es ist ein guter Ausgangspunkt, denn wir können uns ein Szenario vorstellen, in dem alle philosophischen und methodischen Diskussionen vorübergehend vermieden werden. Wir können technisch "SOAP-REST" mit "NON-SOAP-REST" in ähnlichen Diensten vergleichen,
SOAP-REST (= "REST-SOAP"): Wie von L.Mandel gezeigt , kann WSDL2 einen REST-Webservice beschreiben. Wenn wir annehmen, dass beispielhaftes XML in SOAP eingeschlossen werden kann, lautet die gesamte Implementierung "SOAP-REST". .
NON-SOAP-REST : Jeder REST-Webdienst, der nicht SOAP sein kann ... Das sind "90%" der bekannten REST-Beispiele. Einige verwenden kein XML (z. B. typische AJAX-RESTs verwenden stattdessen JSON), andere verwenden andere XML-Strukturen ohne die SOAP-Header oder -Regeln. PS: Um Informalität zu vermeiden, können wir in den Vergleichen REST Level 2 annehmen .
Um konzeptioneller zu vergleichen, vergleichen Sie "NON-REST-SOAP" mit "NON-SOAP-REST" als unterschiedliche Modellierungsansätze. Vervollständigen Sie diese Taxonomie von Webdiensten:
NON-REST-SOAP : Jeder SOAP-Webdienst, der nicht REST sein kann ... Das sind "90%" der bekannten SOAP-Beispiele.
NON-REST-NEITHER-SOAP : Ja, das Universum der "Web-Service-Modellierung" umfasst andere Dinge (z. B. XML-RPC ).
Seife in den REST-Bedingungen
Vergleich vergleichbarer Dinge: SOAP-REST mit NON-SOAP-REST .
PROS
Einige Begriffe erklären,
Vertragsstabilität : für alle Arten von Verträgen (als "schriftliche Vereinbarungen"),
Durch die Verwendung von Standards : Alle Ebenen des W3C-Stacks sind gegenseitig kompatibel. REST hingegen ist kein W3C- oder ISO-Standard und enthält keine normierten Details zu den Peripheriegeräten des Dienstes. Also, wie ich , @ DaveWoldrich (20 Stimmen), @cynicalman (5), @Exitos (0) zuvor sagte, in einem Kontext, in dem STANDARDS NOTWENDIG sind, brauchen Sie SOAP.
Durch die Verwendung von Best Practices : Der "ausführliche Aspekt" der W3C-Stack- Implementierungen übersetzt relevante menschliche / rechtliche / juristische Vereinbarungen.
Robustheit : Die Sicherheit der SOAP-Struktur und der Header. Mit der Metada-Kommunikation (mit der vollen Ausdruckskraft von XML) und der Überprüfung haben Sie eine "Versicherungspolice" gegen Änderungen oder Lärm.
SOAP hat "Transaktionszuverlässigkeit (...) bei Kommunikationsfehlern. SOAP verfügt über mehr Kontrollen in Bezug auf Wiederholungslogik und kann somit mehr End-to-End-Zuverlässigkeit und Servicegarantien bieten", E. Terman .
Profis nach Beliebtheit sortieren,
Bessere Tools (~ 70 Stimmen): SOAP hat derzeit den Vorteil besserer Tools seit 2007 und noch 2012, da es sich um einen klar definierten und allgemein akzeptierten Standard handelt. Siehe @MarkCidade (27 Stimmen), @DaveWoldrich (20), @JoshM (13), @TravisHeseman (9).
Standardkonformität (25 Stimmen): Wie ich , @DaveWoldrich (20 Stimmen), @cynicalman (5), @Exitos (0) zuvor sagte, benötigen Sie in einem Kontext, in dem STANDARDS erforderlich sind, SOAP.
Robustheit : Versicherung von SOAP-Headern, @JohnSaunders (8 Stimmen).
Nachteile
Die SOAP-Struktur ist komplexer (mehr als 300 Stimmen): Alle Antworten hier und Quellen zu "SOAP vs REST" zeigen eine gewisse Abneigung gegen die Redundanz und Komplexität von SOAP. Dies ist eine natürliche Folge der Anforderungen an die formale Überprüfung (siehe unten) und an die Robustheit (siehe oben). "REST NON-SOAP" (und XML-RPC, der SOAP-Urheber ) kann einfacher und informeller sein.
Die "einzige XML" -Einschränkung ist ein Leistungshindernis bei der Verwendung winziger Dienste (~ 50 Stimmen): siehe json.org/xml und diese oder diese andere Frage . Dieser Punkt wird von @toluju (41) und anderen gezeigt.
PS: Da JSON kein IETF-Standard ist, können wir einen De-facto-Standard für die Web-Software-Community in Betracht ziehen .
Modellierungsdienste mit SOAP
Jetzt können wir SOAP-NON-REST mit NON-SOAP-REST- Vergleichen hinzufügen und erklären, wann SOAP besser zu verwenden ist :
Bedarf an Standards und stabilen Verträgen (siehe Abschnitt "PROS"). PS: Siehe einen typischen "B2B-Bedarf an Standards", der von @saille beschrieben wird .
Bedarf an Werkzeugen (siehe Abschnitt "PROS"). PS: Standards und das Vorhandensein formaler Überprüfungen (siehe unten) sind wichtige Themen für die Werkzeugautomatisierung.
Parallele schwere Verarbeitung (siehe Abschnitt "Kontext / Grundlagen" weiter unten): Bei größeren und / oder langsameren Prozessen, unabhängig von der etwas komplexeren SOAP, sind Zuverlässigkeit und Stabilität die besten Investitionen.
Benötigen Sie mehr Sicherheit : Wenn mehr als HTTPS erforderlich ist und Sie wirklich zusätzliche Schutzfunktionen benötigen, ist SOAP die bessere Wahl ( siehe @Bell , 32 Stimmen). "Senden der Nachricht entlang eines Pfades, der komplizierter ist als eine Anforderung / Antwort oder über einen Transport, der kein HTTP beinhaltet", S. Seely . XML ist ein zentrales Thema, das Standards für XML-Verschlüsselung , XML-Signatur und XML-Kanonisierung bietet. Nur mit SOAP können Sie diese Mechanismen durch einen allgemein anerkannten Standard wie WS-Security in eine Nachricht einbetten .
Benötigen Sie mehr Flexibilität (weniger Einschränkungen): SOAP benötigt keine exakte Korrespondenz mit einer URI. nicht auf HTTP beschränkt; muss nicht auf 4 Verben beschränkt werden. Wie @TravisHeseman (9 Stimmen) sagt, verwenden Sie SOAP, wenn Sie etwas "Flexibles für eine beliebige Anzahl von Client-Technologien und -Verwendungen" möchten.
PS: Denken Sie daran, dass XML universeller / ausdrucksvoller ist als JSON (et al.).
Notwendigkeit für formale Überprüfungen : wichtig zu verstehen , dass W3C - Stack nutzt formale Methoden und REST ist eher informell. Ihre WSDL- Dienstbeschreibung (eine formale Sprache ) ist eine formale Spezifikation Ihrer Webdienstschnittstellen, und SOAP ist ein robustes Protokoll, das alle möglichen WSDL-Vorschriften akzeptiert.
KONTEXT
Historisch
Zur Beurteilung von Trends ist eine historische Perspektive erforderlich. Für dieses Thema eine 10 oder 15 Jahre Perspektive ...
Vor der W3C-Standardisierung gibt es eine gewisse Anarchie. Es war schwierig, interoperable Dienste mit unterschiedlichen Frameworks zu implementieren, und es war schwieriger, kostspieliger und zeitaufwendiger, etwas Interoperables zwischen Unternehmen zu implementieren. Die W3C-Stack- Standards waren ein Licht, ein Norden für das Zusammenspiel komplexer Webdienste.
Für alltägliche Aufgaben wie die Implementierung von AJAX ist SOAP sehr umfangreich ... Die Notwendigkeit einfacher Ansätze muss daher ein neues theoretisches Framework wählen ... Und große "Web-Software-Player" wie Google, Amazon, Yahoo et al. Haben die beste Alternative gewählt, nämlich den REST-Ansatz. War in diesem Zusammenhang das REST-Konzept als "konkurrierendes Framework" angekommen, und heute (2012) ist diese Alternative ein De-facto-Standard für Programmierer.
Stiftungen
Im Kontext von Parallel Computing stellen die Webdienste parallele Unteraufgaben bereit. Protokolle wie SOAP sorgen für eine gute Synchronisation und Kommunikation. Keine "Aufgabe": Webdienste können als
grobkörnige und peinliche Parallelität eingestuft werden .
Wenn die Aufgabe größer wird, wird die "Komplexitätsdebatte" weniger bedeutsam und die Robustheit der Kommunikation und die Solidität der Verträge werden relevanter.