SEIFE
Familie | Nachrichten Protokoll |
---|---|
Entworfen von | Dave Winer, Don BoxBob Atkinson und Mohsen al-Ghoseein |
Erstmals erschienen | Anfangs als XML-RPC Im Juni 1998 |
Stabile Version | 1.2 / 27 April 2007 |
SEIFE (früher a BackRonym zum Einfaches Objektzugriffsprotokoll) ist eine Nachricht Protokoll Spezifikation für den Austausch strukturierter Informationen bei der Implementierung von Internetdienste in Computernetzwerke. Es verwendet XML -Informationen gesetzt für seine Nachrichtenformatund stützt sich auf Anwendungsschicht Protokolle am häufigsten Hypertext Transfer Protocol (HTTP), obwohl einige Legacy -Systeme überkommen Simple Mail Transfer Protocol (SMTP) für Nachrichtenverhandlungen und Übertragung.
Mit Seifen können Entwickler Prozesse aufrufen, die auf unterschiedlichen Betriebssystemen ausgeführt werden (wie z. Fenster, Mac OS, und Linux) authentifizieren, autorisieren und kommunizieren mit Verwendung Erweiterbare Markup -Sprache (Xml). Da Webprotokolle wie HTTP auf praktisch allen Betriebssystemen installiert und ausgeführt werden, können Kunden auf Soap Webdienste aufrufen und Antworten unabhängig von Sprache und Plattformen erhalten.
Eigenschaften
Seife liefert die Messaging -Protokollschicht von a Webdiensteprotokollstapel Für Webdienste. Es ist ein XML-basierter Protokoll, das aus drei Teilen besteht:
- ein Umschlag, der die Nachrichtenstruktur definiert[1] und wie man es verarbeitet
- Eine Reihe von Codierungsregeln für das Ausdrücken von Instanzen von anwendungsdefinierten Datenatypen
- eine Übereinkommen zur Darstellung von Verfahrensanrufen und Antworten
Seife hat drei Hauptmerkmale:
- Erweiterbarkeit (Sicherheit und WS-Adressierung gehören zu den in der Entwicklung befindlichen Erweiterungen)
- Neutralität (Seife kann über jedes Protokoll wie z. Http, SMTP, TCP, UDP)
- Unabhängigkeit (Seife ermöglicht jede Programmiermodell)
Als Beispiel für die SOAP-Prozeduren kann eine Anwendung eine SOAP-Anforderung an einen Server senden, der Webdienste ermöglicht-wie eine Immobilienpreisdatenbank-mit den Parametern für eine Suche. Der Server gibt dann eine SOAP-Antwort (ein XML-formatiertes Dokument mit den resultierenden Daten) zurück, z. B. Preise, Standort, Funktionen. Da die generierten Daten in einem standardisierten maschinellierbaren Format geliefert werden, kann die anforderende Anwendung sie direkt integrieren.
Die Seifenarchitektur besteht aus mehreren Schichten von Spezifikationen für:
- Nachrichtenformat
- Nachrichtenaustauschmuster (MEP)
- zugrunde liegende Transportprotokollbindungen
- Nachrichtenverarbeitungsmodelle
- Protokollvergesserbarkeit
Seife entwickelte sich als Nachfolger von XML-RPC, obwohl es seine Transport- und Interaktionsneutralität von der Webdienstadressierung leiht[2] und der Umschlag/Kopf/Körper von anderswo (wahrscheinlich von WDDX).
Geschichte
SOAP wurde als Objekt-Access-Protokoll entwickelt und als freigegeben XML-RPC Im Juni 1998 als Teil von Frontier 5.1 von Dave Winer, Don BoxBob Atkinson und Mohsen al-Ghoseein für Microsoft, wo Atkinson und Al-Ghoseein arbeiteten.[3] Die Spezifikation wurde erst dann zur Verfügung gestellt, bis sie eingereicht wurde Ietf 13. September 1999.[4][5] Laut Don Box war dies auf Politik in Microsoft zurückzuführen.[6] Wegen Microsofts Zögern versand Dave Winer XML-RPC In 1998.[7]
Das eingereichte Internetentwurf nicht erreicht RFC Status und gilt daher nicht als "Webstandard" als solche. Version 1.1 der Spezifikation wurde am 8. Mai 2000 als W3C -Note veröffentlicht.[8] Da Version 1.1 nicht erreichte W3C -Empfehlung Status, es kann auch nicht als "Webstandard" angesehen werden. Version 1.2 der Spezifikation wurde jedoch a W3c Empfehlung am 24. Juni 2003.
Die SOAP -Spezifikation[9] wurde von der XML -Protokollarbeitsgruppe aufrechterhalten[10] des World Wide Web Konsortium Bis die Gruppe am 10. Juli 2009 geschlossen wurde. SEIFE Ursprünglich stand für "einfache Objektzugriffsprotokoll", aber Version 1.2 des Standards hat dieses Akronym fallen lassen.[11]
Nachdem Seife zum ersten Mal eingeführt worden war, wurde sie zur zugrunde liegenden Schicht eines komplexeren Satzes von Internetdienste, bezogen auf WSDL, Xsd und Uddi. Diese unterschiedlichen Dienste, insbesondere UDDI, haben sich als weitaus weniger Interesse erwiesen, aber eine Wertschätzung von ihnen vermittelt ein vollständiges Verständnis der erwarteten Rolle der Seife im Vergleich zu der tatsächlich entwickelten Webdienste.
Seifen Terminologie
Die SOAP -Spezifikation kann weitgehend definiert werden, um aus den folgenden drei konzeptionellen Komponenten zu bestehen: Protokollkonzepte, Kapselungskonzepte und Netzwerkkonzepte.[12]
Protokollkonzepte
- SEIFE
- Dies ist eine Reihe von Regeln, die die Format- und Verarbeitungsregeln für Informationsformen formalisieren und regalisieren, die zwischen einem Seifenabsender und einem Seifenempfänger ausgetauscht werden.
- Seifenknoten
- Dies sind physikalische/logische Maschinen mit Verarbeitungseinheiten, mit denen Seifennachrichten übertragen/weiterleiten, empfangen und verarbeitet werden. Diese sind analog zu Knoten in einem Netzwerk.
- Seifenrollen
- Über dem Pfad einer Seifennachricht übernehmen alle Knoten eine bestimmte Rolle. Die Rolle des Knotens definiert die Aktion, die der Knoten auf der von ihm empfangenen Nachricht ausführt. Zum Beispiel eine Rolle "keiner" bedeutet, dass kein Knoten den SOAP -Header in irgendeiner Weise verarbeitet und die Nachricht einfach über seinen Pfad übertragen wird.
- Seifenprotokollbindung
- Eine SOAP -Nachricht muss in Verbindung mit anderen Protokollen funktionieren, um über ein Netzwerk zu übertragen. Zum Beispiel könnte eine SOAP -Nachricht gebrauchen TCP als niedrigere Schichtprotokoll zum Übertragen von Nachrichten. Diese Bindungen sind im SOAP -Protokollbindungsgerüst definiert.[13]
- Seifenfunktionen
- SOAP bietet nur ein Messaging -Framework. Es kann jedoch erweitert werden, um Funktionen wie Zuverlässigkeit, Sicherheit usw. hinzuzufügen. Wenn Sie das SOAP -Framework hinzufügen, müssen Regeln eingehalten werden.
- Seifenmodul
- Eine Sammlung von Spezifikationen bezüglich der Semantik des SOAP -Headers, um neue Merkmale zu beschreiben, die auf Seife erweitert werden. Ein Modul muss null oder mehr Funktionen realisieren. Seife erfordert Module, sich an vorgeschriebene Regeln einzuhalten.[14]
Datenkapselungskonzepte
- SOAP -Nachricht
- Repräsentiert die Informationen, die zwischen 2 Seifenknoten ausgetauscht werden.
- Seifenumschlag
- Es ist das umschließende Element einer XML -Nachricht, die es als SOAP -Nachricht identifiziert.
- Seifenkopfblock
- Ein SOAP -Header kann mehr als eines dieser Blöcke enthalten, jeweils ein diskreter Rechenblock innerhalb des Headers. Im Allgemeinen die Seife Rolle Informationen werden verwendet, um Knoten auf dem Pfad zu zielen. Ein Headerblock soll auf einen Seifenknoten gerichtet sein, wenn die SOAP -Rolle für den Headerblock der Name einer Rolle ist, in der der Seifenknoten arbeitet. (Beispiel: Ein Seifenkopfzeilenblock mit Rollenattribut als Ultimatereceiver wird nur am Zielknoten gezielt, der diese Rolle spielt. Ein Kopfball mit einem Rollenattribut als nächste wird sowohl auf jeden Zwischenmediär als auch auf den Zielknoten ausgerichtet.)
- Seifenkopfball
- Eine Sammlung eines oder mehrerer Headerblöcke, die auf jeden Seifenempfänger abzielen.
- Seifenkörper
- Enthält den Körper der Nachricht, die für den Seifenempfänger bestimmt ist. Die Interpretation und Verarbeitung des Seifenkörpers wird durch Headerblöcke definiert.
- Seifenfehler
- Wenn ein Seifenknoten eine SOAP -Nachricht nicht verarbeitet, fügt er das Seifenfehlerelement die Fehlerinformationen hinzu. Dieses Element ist im Seifenkörper als untergeordnetes Element enthalten.
Nachrichtensender und Empfängerkonzepte
- SOAP -Absender
- Der Knoten, der eine Seifennachricht überträgt.
- Seifenempfänger
- Der Knoten empfängt eine Seifennachricht. (Könnte ein Vermittler oder der Zielknoten sein).
- SOAP -Nachrichtenpfad
- Der Pfad, der aus allen Knoten besteht, die die Seifennachricht zum Zielknoten erreichte.
- Erstseifenabsender
- Dies ist der Knoten, der die SOAP -Nachricht entstanden hat, die übertragen werden soll. Dies ist die Wurzel des SOAP -Nachrichtenpfads.
- Seifenvermittler
- Alle Knoten zwischen dem Seifenautor und dem beabsichtigten Seifenziel. Es verarbeitet die darauf abzielten Seifenheaderblöcke und leitet eine SOAP -Nachricht an einen ultimativen Seifenempfänger weiter.
- Ultimate Seifenempfänger
- Der Zielempfänger der SOAP -Nachricht. Dieser Knoten ist für die Verarbeitung der Nachrichtenbehörde und alle Headerblöcke verantwortlich, die darauf abzielen.
Spezifikation
Die SOAP -Spezifikation definiert das Messaging -Framework, das aus:
- Das SeifenverarbeitungsmodellDefinieren der Regeln für die Verarbeitung einer SOAP -Nachricht[15]
- Das Seifenerweiterbarkeitsmodell Definieren der Konzepte von Seifenfunktionen und Seifenmodulen[15]
- Das Seife zugrunde liegende Protokollbindung Framework, das die Regeln für die Definition einer Bindung an ein zugrunde liegendes Protokoll beschreibt, das zum Austausch von Seifenmeldungen zwischen Seifenknoten verwendet werden kann[15]
- Das SOAP -Nachrichtenkonstrukt Definieren der Struktur einer Seifennachricht[15]
Seifenbausteine
Eine SOAP -Nachricht ist ein gewöhnliches XML -Dokument, das die folgenden Elemente enthält:
Element | Beschreibung | Erforderlich |
---|---|---|
Umschlag | Identifiziert das XML -Dokument als SOAP -Nachricht. | Ja |
Header | Enthält Headerinformationen. | Nein |
Körper | Enthält Anruf- und Antwortinformationen. | Ja |
Fehler | Bietet Informationen zu Fehlern, die bei der Verarbeitung der Nachricht aufgetreten sind. | Nein |
Transportmethoden
Beide SMTP und Http sind gültige Anwendungsschichtprotokolle, die als Transport für SOAP verwendet werden, aber HTTP hat eine breitere Akzeptanz gewonnen, da es mit der heutigen Internetinfrastruktur gut funktioniert. Insbesondere funktioniert HTTP gut mit dem Netzwerk Firewalls. Seife kann auch über verwendet werden Https (Das ist das gleiche Protokoll wie HTTP auf Anwendungsebene, verwendet aber eine Verschlüsselter Transportprotokoll darunter) mit einfacher oder gegenseitiger Authentifizierung; Dies ist der befürwortete WS-i Methode zur Bereitstellung von Webdienstsicherheit, wie in der angegeben WS-I Basic Profil 1.1.
Dies ist ein großer Vorteil gegenüber anderen verteilten Protokollen wie GIOP/IIOP oder DCOM, die normalerweise von Firewalls gefiltert werden. Seife vorbei Amqp ist eine weitere Möglichkeit, dass einige Implementierungen unterstützen. Seife hat auch einen Vorteil gegenüber DCOM Dass es nicht von Sicherheitsrechten betroffen ist, die auf den Maschinen konfiguriert sind, die Kenntnisse sowohl über die Übertragung als auch über den Empfang von Knoten erfordern. Auf diese Weise können Seife lose auf eine Weise gekoppelt werden, die mit nicht möglich ist DCOM. Es gibt auch die SOAP-over-UDP OASE Standard.
Nachrichtenformat
XML -Informationen gesetzt wurde aufgrund seiner weit verbreiteten Verwendung durch große Unternehmen als Standard -Nachrichtenformat ausgewählt und Open Source Entwicklungsbemühungen. Normalerweise ist der XML -Informationssatz festgelegt serialisiert wie Xml. Eine Vielzahl von frei verfügbaren Freien Werkzeug Erleichtert den Übergang zu einer SOAP-basierten Implementierung erheblich. Das etwas langwierig Syntax von Xml Kann sowohl ein Vorteil als auch ein Nachteil sein. Während es die Lesbarkeit für den Menschen fördert, erleichtert es die Fehlererkennung und vermeidet Interoperabilitätsprobleme wie Byte-Ordnung (AnordnungEndiangess), es kann die Verarbeitungsgeschwindigkeit verlangsamen und umständlich sein. Zum Beispiel, Corba, Giop, EIS, und DCOM Verwenden Sie viel kürzere, binäre Nachrichtenformate. Andererseits stehen Hardware -Geräte zur Beschleunigung der Verarbeitung von zur Beschleunigung von zur Verfügung Xml Mitteilungen.[16][17] Binärer XML wird auch als Mittel zur Straffung der Durchsatzanforderungen von XML untersucht. XML-Nachrichten durch ihre selbstdokumentierende Natur haben normalerweise mehr "Overhead" (z. B. Header, verschachtelte Tags, Abgrenzer) als tatsächliche Daten im Gegensatz zu früheren Protokollen, bei denen der Overhead normalerweise ein relativ kleiner Prozentsatz der Gesamtnachricht war.
In Financial Messaging -Seife wurde festgestellt, dass eine 2–4 -mal größere Nachricht als frühere Protokolle FIX (Finanzinformationsaustausch) und CDR (Gemeinsame Datenrepräsentation).[18]
Der XML -Informationssatz muss in XML nicht serialisiert werden. Zum Beispiel CSV und JSON Es gibt XML-Infoset-Darstellungen. Es ist auch nicht erforderlich, ein generisches Transformationsrahmen anzugeben. Das Konzept der SOAP -Bindungen ermöglicht bestimmte Bindungen für eine bestimmte Anwendung. Der Nachteil ist, dass sowohl die Absender als auch die Empfänger diese neu definierte Bindung unterstützen müssen.
Beispielnachricht (in HTTP eingekapselt)
Die folgende Nachricht fordert einen Aktienkurs für AT & T (Stock -Ticker -Symbol "T") an.
POST /Auf Lager Http/1.1 Gastgeber: www.example.org Inhaltstyp: Anwendung/SOAP+XML; charset = utf-8 Inhaltslänge: 299 Seife: "http://www.w3.org/2003/05/soap-envelope" XMLNS: SOAP ="http://www.w3.org/2003/05/soap-envelope" xmlns: m ="http://www.example.org"> T
Technische Kritik
Vorteile
- Die Neutralitätsmerkmale von SOAP macht es ausdrücklich für die Verwendung mit jedem Transportprotokoll geeignet. Implementierungen verwenden häufig HTTP als Transportprotokoll, andere beliebte Transportprotokolle können verwendet werden. Zum Beispiel kann Seife auch über SMTP verwendet werden, JMS[19][20] und Nachrichtenwarteschlangen.
- Seife in Kombination mit HTTP -Post-/Antwortaustausch in Kombination von vorhandenen Firewalls und Proxys und folglich erfordert es nicht, die weit verbreiteten Computer- und Kommunikationsinfrastrukturen zu ändern, die für die Verarbeitung von HTTP -Post-/Antwortbörsen vorhanden sind.
- SOAP steht ihm allen Einrichtungen von XML zur Verfügung, einschließlich einfacher Internationalisierung und Erweiterbarkeit mit XML -Namespaces.
Nachteile
- Bei Verwendung der Standardimplementierung und der Standard -SOAP/HTTP -Bindung wird das XML -Infoset als XML serialisiert. Um die Leistung für den Sonderfall von XML mit eingebetteten binären Objekten zu verbessern, die Nachrichtenübertragungsoptimierungsmechanismus wurde vorgestellt.
- Wenn Sie sich auf HTTP als Transportprotokoll verlassen und nicht verwenden Webdienste adressieren oder an Dienstbus eines UnternehmensDie Rollen der interagierenden Parteien sind festgelegt. Nur eine Partei (der Kunde) kann die Dienste des anderen nutzen.
- Seife ist weniger "einfach", als der Name vermuten lässt. Die Ausführlichkeit des Protokolls, die langsame Parsengeschwindigkeit von XML und das Fehlen eines standardisierten Interaktionsmodells führten zur Dominanz von Diensten mithilfe des Http Protokoll direkter. Siehe zum Beispiel, SICH AUSRUHEN.
- Als Protokoll-Agnostiker kann Seife protokollspezifische Merkmale und Optimierungen wie z. REST -Uniform -Schnittstelle oder zwischengespeichert - Stattdessen müssen sie neu implementiert werden (wie mit WS-Adressierung).
Siehe auch
- Seife mit Anhängen
- Seife mit Anhang API für Java
- SOAP-over-UDP
- Liste der Webdienstprotokolle
- Nachrichtenübertragungsoptimierungsmechanismus (MTOM)
- XML-binär-optimierte Verpackung (XoP)
- Extensible User Interface Protocol (XUP)-Ein Seifen-basierter UI-Protokoll
- Soapjr- eine Mischung aus Seife und JSON-RPC
- Websocket
- Webdienste Sicherheit
Verweise
- ^ Hirsch, Frederick; Kemp, John; Ilkka, Jani (2007-01-11). Mobile Webdienste: Architektur und Implementierung. John Wiley & Sons (veröffentlicht 2007). p. 27. ISBN 9780470032596. Abgerufen 2014-09-15.
Einfaches Objektzugriffsprotokoll (SOAP) definiert eine Messaging -Hüllkurve, die für die Nutzlast von Anwendungen in einem Teil des Umschlags (der Nachrichtenkörper) und den Steuerungsinformationen in einem anderen (Meldungsheader) entwickelt wurde.
- ^ "Webdienste adressieren (WS-Adressierung)". www.w3.org. Abgerufen 2016-09-15.
- ^ "Exklusive .Net Developer's Journal" Indigo "Interview mit Microsoft Don Box". Dotnet.sys-con.com. Abgerufen 2012-10-04.
- ^ "XML Cover -Seiten zur Geschichte der Seife". Coverpages.org. Abgerufen 2003-07-22.
- ^ "Seifen: Einfacher Objektzugriffsprotokoll". September 1999.
- ^ "Don Box über die Geschichte der Seife". Xml.com. 2001-04-04.
- ^ "XML-RPC für Neulinge". 1998-07-14. Archiviert von das Original am 12. Oktober 1999.
- ^ "W3C Hinweis zum einfachen Objektzugriffsprotokoll (SOAP) 1.1". W3c. 2000-05-08.
- ^ "Seifenspezifikationen". W3c. Abgerufen 2014-03-29.
- ^ "W3C XML -Protokollarbeitsgruppe". W3c. Abgerufen 2014-03-29.
- ^ "SOAP Version 1.2 Teil 1: Messaging Framework (zweite Ausgabe)". W3c. 27. April 2007. Abgerufen 2012-06-15.
Hinweis: In früheren Versionen dieser Spezifikation war der Seifenname ein Akronym. Dies ist nicht mehr der Fall. (Unter Abschnitt 1. Einführung)
- ^ "SOAP Version 1.2 Teil 1: Messaging Framework (zweite Ausgabe)". www.w3.org. Abgerufen 2016-09-14.
- ^ "Bindungsrahmenvorschlag". www.w3.org. Abgerufen 2016-09-14.
- ^ "SOAP Version 1.2 Teil 1: Messaging Framework (zweite Ausgabe)". www.w3.org. Abgerufen 2016-09-14.
- ^ a b c d "SOAP Version 1.2 Teil 1: Messaging Framework (zweite Ausgabe)". www.w3.org.
- ^ "IBM Datapower". 306.ibm.com. 2011-11-30. Archiviert von das Original am 2008-06-22. Abgerufen 2012-10-04.
- ^ "IBM Zürich XML Accelerator Motor" (PDF). Archiviert von das Original (PDF) Am 2012-09-30. Abgerufen 2012-10-04.
- ^ "Bewertung von Seife für Hochleistungsgeschäftsanwendungen: Echtzeit-Handelssysteme". TenerMerx Pty Ltd University of Technology, Sydney. 2011-11-30. Abgerufen 2013-03-14.
- ^ "Seife über JMS -Protokoll". IBM. Abgerufen 22. März, 2020.
- ^ "SOAP-JMS FAQ". SOAP-JMS-Bindungsarbeitsgruppe. Abgerufen 22. März, 2020.
Weitere Lektüre
- Benoît Marchal, "Soapbox: Warum ich Seife verwende", IBM
- Uche Ogbuji, "Tutorial: XML Messaging mit Seife", Hauptberaterin, Vierkind, Inc.