SOAP (bisher unter der Bezeichnung Simple Object Access Protocol bekannt) ist ein schlankes
Protokoll für den Informationsaustausch in einer dezentralen, verteilten Umgebung. Eine SOAP-Nachricht ist die Übertragung von Informationen von einem Absender an einen Empfänger. SOAP-Nachrichten können verbunden werden, um Anfrage-Antwort-Muster auszuführen.
SOAP ist transportunabhängig, wird mit Rücksicht auf die vorhandene Internetinfrastruktur aber meistens über HTTP ausgeführt. SOAP
ermöglicht durch das Definieren eines Nachrichtenpfads für die Weiterleitung von Nachrichten die Bindung und Verwendung aufgespürter Web-Services. Mit
SOAP wird die UDDI für Web-Services abgefragt.
Der Standard JAX-WS (Java™ API for XML Web
Services) führt die Möglichkeit ein, sowohl
SOAP 1.1 als auch SOAP 1.2 zu unterstützen. Wenn WebSphere Application
Server ab Version 7.0 oder WebSphere Application
Server Liberty Profile installiert ist, unterstützt die Workbench SOAP 1.1
und SOAP 1.2.
SOAP 1.1
SOAP 1.1 ist ein protokollunabhängiger Transport und kann in Kombination mit zahlreichen Protokollen verwendet
werden. In Web-Services, die für
WebSphere Application Server entwickelt und implementiert werden,
wird SOAP zusammen mit HTTP, HTTP Extension Framework und
Java Message Service (JMS) verwendet. SOAP ist auch betriebssystemunabhängig und an keine Programmiersprache oder
Komponententechnologie gebunden. Solange der Client XML-Nachrichten absetzen kann, kommt es nicht darauf an, mit welcher Technologie der Client implementiert
wird. Ebenso kann ein Service in jeder Sprache implementiert werden, solange er SOAP-Nachrichten verarbeiten kann. Server und Client können sich außerdem
auf jeder geeigneten Plattform befinden.
SOAP ist ein XML-basiertes Protokoll, das für jede Nachricht drei Abschnitte definiert:
- Envelope. Der Envelope definiert ein Framework, das beschreibt, was eine Nachricht enthält und wie die Nachricht zu verarbeiten ist. Eine SOAP-Nachricht
ist ein Envelope mit null oder mehr Headern und genau einem Hauptteil. Der Envelope ist im XML-Dokument das Element der höchsten Ebene und stellt einen Container
für Steuerinformationen, die Adresse einer Nachricht und die Nachricht selbst bereit. Header transportieren
Steuerinformationen, z. B. Servicequalitätsattribute. Der Hauptteil enthält die Nachrichten-ID und deren Parameter. Sowohl die Header als auch
der Hauptteil sind untergeordnete Elemente des Envelope.
- Codierungsregeln. Mit den Codierungsregeln werden Instanzen von anwendungsdefinierten Datentypen ausgedrückt. Die Codierungsregeln definieren einen
Serialisierungsmechanismus, mit dem Instanzen von anwendungsdefinierten Datentypen ausgetauscht werden können. SOAP
definiert ein von Programmiersprachen unabhängiges Datentypschema, das auf XSD basiert
(XML Schema Definition Language), sowie Codierungsregeln für alle Datentypen, die nach diesem Modell definiert sind. Die SOAP-Codierung ist nicht WS-I-konform, und daher ist die Verwendung von Literalen (d. h. keine Codierung) für interoperable Web-Services empfohlen und für die WS-I-Konformität erforderlich.
- Kommunikationsstile. Die Kommunikation kann einem RPC-Format
(Remote Procedure Call) oder einem nachrichtenorientierten Format (Document) folgen.
SOAP unterstützt zwei unterschiedliche Kommunikationsstile:
- Remote Procedure Call (RPC): RPC ist der Aufruf einer Operation mit Rückgabe eines Ergebnisses. Normalerweise wird RPC
mit SOAP-Codierung verwendet, was nicht mit WS-I konform ist.
- Stil "Document": Der Stil "Document" wird auch als dokument- oder nachrichtenorientierter Stil
bezeichnet. Dieser Stil ermöglicht eine höhere Abstraktionsebene und erfordert mehr Programmierarbeit.
In verteilten Datenverarbeitungsumgebungen
definieren Codierungsstile, wie in der Anwendung definierte Datenwerte aus einem bestimmten Protokollformat und in ein bestimmtes Protokollformat
umgesetzt werden können. Der Umsetzungsprozess wird als Serialisierung und Deserialisierung bezeichnet. Der SOAP-Codierungsstil ist in der
Spezifikation SOAP 1.1 definiert.
- SOAP-Codierung: Mit dem SOAP-Codierungsstil können Sie Werte von Datentypen aus dem SOAP-Datenmodell
serialisieren/deserialisieren. Dieser Codierungsstil ist im Standard SOAP 1.1 definiert und nicht mit
WS-I konform.
Der Stil "XML-Literalcodierung" ist in der WSDL definiert.
- XML-Literalcodierung: Der Begriff Literal bezieht sich auf die Tatsache, dass das Dokument, so wie es ist bzw. nicht codiert, gelesen werden soll. Das Dokument ist als XML serialisiert, d. h. die Nachrichten-XML entspricht dem Schema in WSDL. Bei der Verwendung
der Literalcodierung verweist jeder Nachrichtenteil auf eine konkrete Schemadefinition. Die Literalcodierung ist WS-I-konform.
SOAP 1.2
Die Spezifikation SOAP 1.2 ist eine Empfehlung des W3C
(World Wide Web Consortium), und die Tools dieser Workbench folgen den in SOAP 1.2 beschriebenen Standards.
Die Spezifikation SOAP 1.2 besteht aus drei Teilen sowie einigen Zusicherungen und einer Testsammlung:
SOAP 1.2
ermöglicht eine genauere Definition des SOAP-Verarbeitungsmodells, was die Mehrdeutigkeiten, die manchmal zu
Problemen bei der Interoperabilität führen, wenn keine WS-I-Profile (Web Services-Interoperability)
vorhanden sind, größtenteils aufhebt. SOAP 1.2 soll das Risiko von Interoperabilitätsproblemen
mit Implementierungen der SOAP Version 1.2
zwischen Anbietern verringern.
Im Folgenden sind einige der wichtigeren Änderungen in der Spezifikation
SOAP 1.2 beschrieben:
- Die Fähigkeit, andere Transportprotokolle als HTTP offiziell zu definieren, sofern sich der Anbieter an das in SOAP 1.2 definierte Bindungsgerüst hält. HTTP ist zwar allgegenwärtig, jedoch nicht so zuverlässig wie andere Transportprotokolle, z. B. TCP/IP,
MQ usw.
- SOAP 1.2 basiert auf dem XML Information Set (XML Infoset).
Das Information Set bietet eine Möglichkeit, das XML-Dokument über das XSD-Schema zu beschreiben,
serialisiert das Dokument aber nicht notwendigerweise über das Serialisierungsverfahren von SOAP 1.1. SOAP 1.1
basiert auf der Serialisierung von XML 1.0.
Das Information Set vereinfacht die Verwendung anderer Serialisierungsformate, wie z. B. des binären
Protokollformats. Sie können das binäre Protokollformat verwenden, um die Nachricht in ein kompaktes
Format zu komprimieren, wenn einige der ausführlichen Tagging-Informationen nicht erforderlich sind.