Kategorien
Webdesign

Was ist… Lexikon: SOAP

SOAP, das ist hier nicht Seife, sondern steht für „Simple Object Access Protocol“ und findet sich als solches hinter fast allen Webservices. Es ist ein Protokoll, über welches Daten zwischen Systemen oder Applikationen ausgetauscht werden kann. SOAP selbst basiert auf einem XML-Schema zur Darstellung von Daten sowie einem Protokoll, über welches der Transport von Daten abgewickelt wird. In der Regel wird hierfür TCP oder HTTP verwendet.

SOAP, das ist hier nicht Seife, sondern steht für „Simple Object Access Protocol“ und findet sich als solches hinter fast allen Webservices. Es ist ein Protokoll, über welches Daten zwischen Systemen oder Applikationen ausgetauscht werden kann. SOAP selbst basiert auf einem XML-Schema zur Darstellung von Daten sowie einem Protokoll, über welches der Transport von Daten abgewickelt wird. In der Regel wird hierfür TCP oder HTTP verwendet. Es ist aber auch möglich, FTP, SMTP oder JMS als Übertragungsprotokoll zu verwenden. In der Praxis wird jedoch auf HTTP(s) zurückgegriffen.

Als Vorgänger von SOAP kann man XML-RPCs bezeichen – das steht für „Extensible Markup Language Remote Procedure Calls“, welches ebenfalls den Aufruf von Funktionen über verschiedene Systeme ermöglicht.  XML-RPC verwendet für den Transport HTTP und für die Darstellung XML. Das heißt, es ist deutlich weniger flexibel als SOAP, jedoch auch schlanker und einfacher zu erlernen.

Viele Webservices funktionieren sowohl über XML-RPCs als auch über SOAP, zum Beispiel die Amazon Webservices. Mit ihrer Hilfe kann ein Nutzer einen eigenen Amazon Webshop aufbauen, da er dank Webservices über SOAP kompletten Zugriff auf die Produktdatenbank von Amazon hat. Es können so zum Beispiel Daten aus einer SQL Datenbank für dritte zugänglich gemacht werden, ohne das diese Nutzer sich auf ihrem Server befinden müssen. Man kann Zugriff auf die eigene Datenbank gewähren und diesen steuern, indem man  gewisse Abfragen nicht zulässt.

SOAP hat bisher den Status einer W3C Empfehlung. Das XML-Schema definiert eine Syntax, nach welcher der Datenaustausch zwischen Webdiensten oder Applikationen innerhalb eines Netzwerkes auszurichten ist. Dabei werden jedoch keine Einschränkungen auf die Natur und Art der Daten, die ausgetauscht werden, gemacht. So ermöglicht SOAP eine sehr flexible Anwendungsentwicklung. Es wird insbesondere dann eingesetzt, wenn zwischen Softwarearchitekturen Kompatibilitätsprobleme herrschen – hier können über SOAP Brücken zwischen Systemen geschlagen werden.

Schema einer SOAP Nachricht

Das Schema einer SOAP-Nachricht ist stets dasselbe – es besteht aus einem Header, sowie einem Körper. Diese Elemente müssen auftauchen — in der Art, welche Daten verschickt werden und welches Format diese haben, hat der Entwickler jedoch volle Flexibilität.

Die Flexibilität der Kommunikation mit SOAP hat jedoch auch Konsequenzen, da Informationen stets in ein XML-Dokument gepackt werden müssen, welches valide ist. Dies wird stets vor dem Absenden überprüft. Durch das XML-Schema wird der Datenaufwand für das Versenden selbst von kleinen Informationspaketen multipliziert. PHP-Webentwickler haben eine Reihe von Programmbibliotheken zur Verfügung, mit denen Sie mit SOAP arbeiten können:

  • PEAR::SOAP – dieses Paket ist im PEAR-Installer standardmäßig ab PHP 4.3.x enthalten
  • nuSoap – einfach zu benutzende SOAP-Implementierung

Eine Hauptaufgabe der Bibliotheken ist die Interpretation der SOAP Antworten sowie die Erzeugung und das Absetzen der Anfragen – dazu benötigen die Bibliotheken einen XML-Parser, zum Beispiel den Expat XML Parser. ™

Von Thiemo Fetzer

Thiemo Fetzer lebt seit 2008 in London und promoviert dort im Fachbereich "Entwicklungsökonomie" an der London School of Economics. Zuvor hat er Wirtschaftswissenschaften, Mathematik und Informatik in Magdeburg und Ulm studiert.

4 Antworten auf „Was ist… Lexikon: SOAP“

Hi,
beide Aussagen finde ich hier zutreffend. Ich selber würde auch generell jede andere Api vorziehen wenn ich um SOAP vorbeikomme.

Langsam, aufgebläht. Oft ist die notation und declaration doppelt und dreifach so gross wie der eigentliche benötigte wert. da hat meiner Meinung nach die Welt schon sparsamere Lösung hervor gebracht.
Das ist aber auch nur meine Meinung.

SOAP und REST sind voellig verschiedene Sachen, die man zufaelligerweise fuer die selbe Sache missbrauchen kann. SOAP wird dazu verwendet Daten zu uebertragen (das war die urspruengliche Motivation). Mittlerweile hat sich SOAP, das per Definition kein Akronym mehr ist, so entwickelt, dass man damit entfernte Methodenaufrufe realisieren kann. REST definiert dagegen, wie Daten als Resourcen strukturiert werden, wie sie abgefragt werden duerfen und welche HTTP Methoden man dafuer ntuzen soll.

Fazit: Auch wenn Aepfel und Birnen aehnlich aussehen, schmecken sie dennoch voellig anders.

SOAP ist imho hoffnungslos over-engineered; entwickelt von Leuten die HTTP nicht verstanden haben. Ein schwerfälliger Dinosaurier der zum Glück schon langsam wieder am aussterben ist.

Wenn man die Wahl zwischen einer SOAP und einer REST API hat, greift man in 99% der Fälle besser zu letztgenannter und erspart sich viel Ärger.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.