Web-ServicesSOAP



SOAP wurde ausgelegt, um entfernte Applikationen unabhängig von der verwendeten Plattform und Programmiersprache aufzurufen. Die Spezifikation unterscheidet zwei Ausdrucksweisen von SOAP: „Literal“ und „Encoded“. Beide verwenden für die Übermittlung von Daten jeweils eine SOAP Message. Eine SOAP Message besteht aus einem SOAP Umschlag (Envelope).

Dieser enthält:
  SOAP-Message 

Literal-style SOAP bedeutet, dass der Client ein XML Dokument im Body der SOAP Nachricht an den Web Service sendet. Der Web Service bearbeitet die Nachricht und sendet eine Antwort an den Client zurück. Diese Form der Kommunikation zwischen Client und Service wird auch Messaging genannt. Bei der Verwendung von Messaging besteht zwischen dem Client und dem Service lediglich eine Vereinbarung über das Format der Nachricht. Das Format wird hierzu mit XML Schemas (XSD) definiert. XSD erlaubt die Zuordnung von Datentypen zu den entsprechenden Daten. Für die Verarbeitung der SOAP-Message werden verschiedene Technologien wie XML, XSD, DOM, und XPath verwendet (Siehe dazu W3C ). Entwicklungsplattformen erlauben bereits heute eine Abstrahierung von SOAP. So können Applikationen unter Verwendung einer Proxy Klasse mit relativ wenig Aufwand als Web Service auftreten oder auf einen Web Service zugreifen.


  Proxy Klasse 

Am Beispiel eines Services für die Abfrage von Aktienkursen wird die SOAP Message veranschaulicht. Diese ist hierzu in einem HTTP-Request bzw. in einer HTTP-Response eingebettet.


  Beispiel SOAP Anfrage über HTTP 


  Beispiel SOAP Antwort über HTTP 

Mit Encoded SOAP Messages werden Objekte und andere Datenstrukturen in XML umgewandelt. Dadurch werden Remote Procedure Calls (RPC) ermöglicht. Ein Client kann so auf eine Methode eines entfernten Objektes zugreifen, als wäre dies lokal auf dem eigenen System abgelegt. Tatsächlich werden solche Methodenaufrufe mit SOAP über das Netz an einen entfernten Web Service weitergeleitet. Das zentrale Element ist das lokale Objekt und seine Schnittstellen, also die Eigenschaften und Methoden, und nicht etwa die Nachrichten, die zwischen Client und Service ausgetauscht werden.

Als Beispiel eines RPC über SOAP wird die Klasse „Invoice“ gemäss folgender Abbildung herangezogen. Diese ist auf der Client Seite als Visual Basic Objekt und auf der Server Seite als Java Objekt vorhanden. Die Gemeinsamkeit der beiden Objekte beschränkt sich auf die Verwendung derselben öffentlichen Daten (Eigenschaften). Die Methoden, welche die Objekte anbieten, sind aber komplett voneinander verschieden. Das hat zur Folge, dass bei einem Objektaufruf lediglich die Daten übermittelt werden. Die Logik, welche in den Klassen enthalten ist, kann nicht übertragen werden. Ein Objekt wird vom Absender serialisiert, das bedeutet, es wird in ein XML Format übertragen, so dass es anschliessend in den Body der SOAP Message eingefügt werden kann. Der Empfänger extrahiert aus dem Body der SOAP Message das Objekt durch Deserialisieren und erhält so das ursprüngliche Objekt.


  SOAP RPC 

So betrachtet ergeben sich keine Vorteile bei der Verwendung von RPC über SOAP gegenüber literal-style SOAP. Anders sieht es hingegen aus, wenn der Client und der Service auf derselben Plattform laufen. Hier kann die volle Funktionalität der Objekte genutzt werden.

Die Kommunikation mittels SOAP kann über verschiedene Protokolle abgewickelt werden (HTTP, FTP, SMTP etc.), dies ist auch über Firewalls hinweg möglich.


Quelle: CC eGov Berner Fachhochschule (http://webservice.iwv.ch)


 

Back
Top