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:
- Kopf (Header)
ist optional, enthält Informationen zur Sicherheit und Authentifizierung.
- Nachrichtenkörper (Body)
enthält den Methodenaufruf (oder die Methodenantwort) und die Methodenparameter (oder das Methodenergebnis).
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.
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.
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.
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.