- | - | Anwendung | SOAP | - | HTTP | HTTPS | ... | - | Transport | TCP | - | Netzwerk | IP | - | Netzzugang | Ethernet | Token Ring | FDDI | ... |
SOAP (ursprünglich für Simple Object Access Protocol) ist ein Protokoll, mit dessen Hilfe Daten zwischen Systemen ausgetauscht und Remote Procedure Calls durchgeführt werden können. SOAP stützt sich auf die Dienste anderer Standards, XML zur Repräsentation der Daten und Internet-Protokolle der Transport- und Anwendungsschicht (vgl. TCP/IP-Referenzmodell) zur Übertragung der Nachrichten. Die gängigste Kombination ist SOAP über HTTP und TCP. Die Abkürzung SOAP wird jedoch offiziell seit Version 1.2 nicht mehr als Abkürzung gebraucht, da es erstens (subjektiv) keineswegs einfach (Simple) ist und da es zweitens nicht (nur) dem Zugriff auf Objekte (Object Access) dient.
Im Head-Bereich der Nachricht werden die Metainformationen der Nachricht untergebracht. Diese können Informationen über das Routing der Nachricht, über eine eventuelle Verschlüsselung und / oder über die Zugehörigkeit zu einer Transaktion umfassen.
Im Body der Nachricht sind, wie auch bei HTML, die Nutzdaten untergebracht. Diese Daten müssen vom Empfänger der Nachricht interpretiert werden, mögliche Zwischenstationen können diese auch ignorieren. Die Daten können dabei unter anderem für entfernte Methodenaufrufe, (Fehler-)Meldungen oder reine Daten (z. B. Abbildung einer Klassenstruktur) stehen.
Anschließend können mögliche Anhänge folgen, diese werden abhängig von dem Transportprotokoll an die Nachricht angehängt. Binärdateien (Sound, Video, Grafik etc.) können durch Nutzung von MIME-Mechanismen angebunden werden.
Angenommen es existiert ein Webservice mit dem Namen "CardValidator" zum Validieren von Kreditkarten, der, vereinfacht gesagt, nur eine Kreditkartennummer und das Gültigkeitsdatum der Karte erwartet. Der Server würde dann mit "true" oder "false" antworten – je nachdem, ob die Kartendaten gültig sind oder nicht.
Eine gültige Kreditkartennummer sei 1234 5678 9876 5432 und diese Karte sei bis 12/08 (Dezember 2008) gültig. Bei unserem Beispiel-Webservice würde die Methode validate auf dem Server aufgerufen, um die Überprüfung durchzuführen. Es könnte folgender Datenaustausch zwischen Client und Server stattfinden:
SOAP-Anfrage vom Client (ohne HTTP-Header):
SOAP-Antwort vom Server (ohne HTTP-Header):
An diesem einfachen Beispiel wird bereits deutlich, dass SOAP die Menge der zu übertragenden Daten erheblich (ca. Faktor 25 beim Request und Faktor >100 bei der Antwort) aufbläht. Dies ist nicht nur ein Problem der beanspruchten Netzwerkbandbreite, auch das Generieren und Auswerten (Parsen) der Nachrichten erfordert sehr viel Rechenzeit, verglichen mit anderen, einfacheren RPC-Protokollen.
Als Transportschicht diente früher ausschließlich HTTP. In den heutigen Implementierungen ist die Transportschicht aber weitgehend abstrahiert und lässt sich fast beliebig austauschen. Neuere Erweiterungen betreffen den Bereich des Transports von binären Daten. Außerdem entstehen viele nützliche Tools zur Entwicklung von SOAP-Clients, aber auch von Serveranwendungen für das Bereitstellen (Deployment) und Managen, resp. Überwachen, der Dienste (Applikationsserver).
Netzwerkprotokoll auf Anwendungsschicht | Middleware | Abkürzung | Webservice
SOAP | SOAP | SOAP | SOAP | پروتکل دسترسی آسان به اشیاء | SOAP | Simple Object Access Protocol | Simple Object Access Protocol | SOAP | SOAP | SOAP | Simple Object Access Protocol | Simple Object Access Protocol | Simple Object Access Protocol | SOAP | SOAP | SOAP | SOAP