Möchte man in Netz­wer­ken wie dem Internet mit­ein­an­der kom­mu­ni­zie­ren, kann das nur nach fest­ge­leg­ten Regeln funk­tio­nie­ren. Damit die ver­schie­de­nen Computer und andere netz­werk­fä­hi­ge Geräte nicht im Chaos versinken, halten diese sich an ein Netz­werk­pro­to­koll. SOAP ist – neben REST – eines der wich­tigs­ten Pro­to­kol­le im Internet.

Was ist SOAP?

Die Kom­mu­ni­ka­ti­on im Internet basiert prin­zi­pi­ell auf Pro­to­kol­len wie HTTP, HTTPS, FTP oder – auf anderer Ebene – TCP. SOAP ist aber für Web­ser­vices wichtig. Hierbei handelt es sich um eine Schnitt­stel­le, über die ein Gerät den Dienst eines Servers in Anspruch nehmen kann. Such­ma­schi­nen, On­line­shop­ping und viele andere Dienste im Internet laufen über solche Web­ser­vices. SOAP ist eines der Pro­to­kol­le, die das er­mög­li­chen.

Fakt

Ur­sprüng­lich hat man den Namen SOAP als Akronym für „Simple Object Access Protocol“ verwendet. Da diese Be­zeich­nung aber nicht wirklich zu dem Protokoll passt (es ist weder einfach noch greift es nur auf Objekte zu), verwendet man SOAP in­zwi­schen als Namen für sich.

SOAP ist bereits seit den 1990ern im Einsatz, um die Kom­mu­ni­ka­ti­on zwischen einem Client – zum Beispiel dem In­ter­net­brow­ser – und Diensten eines Servers zu er­mög­li­chen. Damit das funk­tio­nie­ren kann, muss der Client Anfragen an das API stellen. Wie diese Anfragen aus­zu­se­hen haben, wird durch das Framework von SOAP geregelt. Innerhalb dieses Re­gel­werks können al­ler­dings – und das ist ein großer Vorteil von SOAP – ap­pli­ka­ti­ons­spe­zi­fi­sche Daten un­ter­ge­bracht werden. Web­ser­vices können so un­ter­schied­li­che An­wen­dun­gen be­reit­stel­len. Damit diese nicht alle die gleiche Syntax haben müssen, um als Web­ser­vice verwendet werden zu können, legt SOAP nur die grund­le­gen­den Regeln fest.

Hinweis

Der Software-Ent­wick­ler Dave Winer kreierte SOAP in Zu­sam­men­ar­beit mit einem Microsoft-Team, um ein funk­ti­ons­tüch­ti­ges Protokoll für das Internet zu schaffen. Dabei wurde großer Wert darauf gelegt, dass SOAP mit W3C-Standards kom­pa­ti­bel ist. Dadurch wurde SOAP selbst zu einer W3C-Emp­feh­lung.

SOAP-Web­ser­vices – die Ein­satz­ge­bie­te des Pro­to­kolls

SOAP spielt dann eine Rolle, wenn ein System in einer ge­ord­ne­ten und ein­ge­schränk­ten Art auf ein anderes System zugreifen soll. Statt dem an­fra­gen­den Client also kom­plet­ten Zugang auf den Server zu geben, kann der Zugriff mit einem Protokoll wie SOAP auf die not­wen­di­gen Funk­tio­nen be­schränkt werden. SOAP bietet mit seiner Ar­chi­tek­tur zu­sätz­lich den Vorteil, dass sehr un­ter­schied­li­che Systeme mit­ein­an­der ko­ope­rie­ren können: Das Protokoll stellt einen Rahmen zu Verfügung, in den sich die spe­zi­fi­sche Ap­pli­ka­ti­on ein­glie­dern kann.

Die un­ter­schied­lichs­ten Web­ser­vices basieren auf SOAP. Bei­spiels­wei­se arbeiten Amazon und eBay (teilweise) mit dem Netz­werk­pro­to­koll.

Der SOAP-Aufbau: Funk­ti­ons­wei­se des Pro­to­kolls

SOAP basiert auf dem XML-In­for­ma­ti­on-Set. Dieses – ebenfalls eine W3C-Emp­feh­lung – ist eine Sammlung von In­for­ma­ti­ons­ein­hei­ten, die für ein wohl­ge­form­tes (also einem emp­foh­le­nen Aufbau ent­spre­chen­des) XML-Dokument notwendig sind. SOAP greift diese in seiner Nach­rich­ten­struk­tur auf und ent­spricht demnach prin­zi­pi­ell einem XML-Dokument.

In den meisten Fällen wird SOAP zudem in HTTP ein­ge­glie­dert. Der Transport funk­tio­niert also über das bekannte Protokoll und wird in dessen Struktur ein­ge­bun­den. Praktisch sieht eine HTTP-Nachricht mit einer SOAP-Request so aus:

POST /example HTTP/1.1
Host: example.org
Content-Type: text/xml; charset=utf-8
…
<!--?xml version="1.0"?-->
<soap-env:envelope </soap-env:envelope<>
xmlns:SOAP-ENV="http://www.w3.org/2003/05/soap-envelope"
SOAP-ENV:encodingStyle="http://www.w3.org/2001/12/soap-encoding">
...
    <soap-env:header></soap-env:header>
        ...
    
    <soap-env:body></soap-env:body>
        ...

In diesem Beispiel beginnt die Anfrage also mit einem HTTP-Header. Dann folgt der so­ge­nann­te SOAP-Envelope. Wie ein Brief­um­schlag umhüllt dieser den ei­gent­li­chen Inhalt der Nachricht. Grund­le­gen­de Elemente von SOAP sind dann Header und Body.

  • Header: Der Kopf der SOAP-Anfrage enthält Metadaten, etwa zur ver­wen­de­ten Ver­schlüs­se­lung. Die Ver­wen­dung ist optional.
  • Body: Im Körper der Nachricht sind die ei­gent­li­chen Daten enthalten.

Die im Body genutzten Be­griff­lich­kei­ten haben schließ­lich nichts mit SOAP selbst zu tun, sondern sind voll­kom­men ap­pli­ka­ti­ons­ab­hän­gig.

Das Protokoll kommt oftmals noch in Kom­bi­na­ti­on mit der Web Services De­scrip­ti­on Language (WSDL) vor. Dabei handelt es sich um eine Be­schrei­bungs­spra­che speziell für Web­ser­vices, die wiederum platt­form­un­ab­hän­gig ist. Ein Client kann mithilfe der Sprache erkennen, welche Dienste ein Web­ser­vice anbietet. Aus der WSDL-Datei ermittelt der Client, welche Mög­lich­kei­ten er für einen SOAP-Request hat. WSDL und SOAP gemeinsam er­mög­li­chen es also, dass zwei un­ter­schied­li­che Systeme ohne vorherige An­pas­sun­gen mit­ein­an­der kom­mu­ni­zie­ren können.

SOAP vs. REST

SOAP und REST (letzteres ist ei­gent­lich eine Ar­chi­tek­tur und kein Protokoll) werden beide für Web­ser­vices verwendet, gehen die Aufgabe aber un­ter­schied­lich an. Während SOAP etwas älter ist, hat REST (bzw. RESTful Web­ser­vices) enorm aufgeholt und stellt derzeit ca. 70 Prozent der Web­ser­vices im Internet zur Verfügung.

Beide haben al­ler­dings un­ter­schied­li­che Vorteile: REST gilt bei­spiels­wei­se als relativ einfach, arbeitet nicht nur mit XML, ist schneller und im Vergleich zu SOAP ein Leicht­ge­wicht. Die Freiheit, die REST in Bezug auf XML hat (man greift hier häufig zu JSON), genießt SOAP bei der Auswahl des Pro­to­kolls. Zwar dürfte HTTP die häufigste Wahl sein, aber theo­re­tisch funk­tio­niert SOAP auch in Kom­bi­na­ti­on mit FTP, SMTP oder anderen Pro­to­kol­len.

SOAP hat zudem einen großen Vorteil in Bezug auf die Si­cher­heit: In dem Netz­werk­pro­to­koll ist WS-Security (Spe­zi­fi­ka­tio­nen zu Si­cher­heits­aspek­ten bezüglich Web­ser­vices) fest verankert. Auch der Umgang mit Fehlern ist in SOAP besser geregelt, denn hier ist eine Funktion zur An­fra­ge­wie­der­ho­lung direkt eingebaut.

Fazit

Sowohl SOAP als auch REST haben Vor- und Nachteile – man kann nicht sagen, dass die eine Lösung generell besser als die andere ist. Zwecks Ein­fach­heit greifen die meisten Ent­wick­ler al­ler­dings zu REST. Letztlich hängt die Wahl aber davon ab, welche Pro­gram­mier­spra­che man verwendet und in welchem Kontext man das Protokoll nutzen möchte.

Zum Hauptmenü