SOAP, SOAP SOAP. Dieses
Schlagwort ist schon seit längerer Zeit in aller Munde und bedeutet, Gott sei
Dank nicht Seife, sondern Simple Object Access Protocoll. SOAP ist ein
einfaches Protokoll für den Austausch von Daten und Informationen in einer
dezentralisierten und verteilten Umgebung wie dem Internet. Dadurch wird es
Ihren Applikationen ermöglicht miteinander über http zu kommunizieren und
Komponenten auf anderen Systemen aufzurufen und auszuführen. Dies ist auf
anderen Wegen und mit anderen Protokollen meist sehr schwierig, bzw. gar nicht
möglich, da Hindernisse wie eine Firewall den zugriff auf Ihre Remote - Objekte
verhindern. Ein weiterer Vorteil von SOAP ist die Plattform Unabhängigkeit.
Für
SOAP sind folgende Kenntnisse ratsam:
-XML
-SDL
(Service Description Language)
-http
(POST / GET)
-WSDL
(Web Service Description Language)
SOAP
basiert auf dem offenem Standard XML und besteht aus folgenden drei
Komponenten:
-Dem
SOAP Envelope welcher den Rahmen definiert, was in einer SOAP Message enthalten
ist.
-Den
SOAP Entschlüsselungs Regeln welche eine Veröffentlichungseinheit
definieren,um Anwendungsspezifische
Daten auszutauschen.
-Und
der SOAP RPC Darstellung die Remoteprozeduraufrufe und - antworten wiedergibt.
SOAP
lebt von Nachrichten und kommuniziert asynchron. Eine SOAP Nachricht (Message)
besteht aus einem SOAP Envelope, einem optionalen SOAP - Header und einem
vorgeschriebenen SOAP - Body. Im der SOAP Message steht die Funktion des Web
Services die aufgerufen werden soll und eventuelle Parameter, die diese
Funktion benötigt. Auf dem Enveleope (Umschlag) steht die Adresse des Web
Services. Nach einem Aufruf einer Web Service Methode erfolgt ein sofortiger
Response. Es gibt keine Events. Soweit zur Definition einer SOAP Message,
doch wie sieht so eine Nachricht IRL (InRealLife)aus?
Als
erstes sehen wir uns den SOAP CALL vom Client zum Server an:
Diese
SOAP Nachricht will am Server die GetServerTime() Funktion aufrufen. Der Client
schickt nun an den Server diese Nachricht und dieser gibt folgenden Response
zurück ( falls er eine solche Methode zur Verfügung stellt):
Dieses
enthält verschiedene Komponenten, Samples und Dokumentationen wie
-SDL
Service Description Language soll ein XML Format bieten um die Service von
Webservern abzufragen, bzw. dient als Metabeschreibung des Web Services
-ROAP Remote Object Proxy Engine
-Listener
SOAP
ist das Protokoll. Für die Funktion benötigt man einen Listener der im
Webserver implementiert wird. Dieser kann als ASP File oder als ISAPI
Extensions implementiert sein.
Die
Lösung mit ISAPIsollte eigentlich
schneller sein, muss aber in C++ entwickelt werden. ASP Seiten werden ganz klar
mit VBScript entwickelt. Ein weiteres wichtiges Tool im SOAP Toolkit ist der
SOAP Toolkit Wizard, welcher Ihnen von vorhandenen COM(ponenten) ein SDL File
erzeugt, welches Sie benötigen um von Ihren Anwendungen heraus die Web Service
Funktionen benutzen zu können.
Um
sich einen größeren Programmieraufwand zu ersparen kann man mit der ROPE (
Remote Object Proxy Engine ) API arbeiten, welche mit dem SOAP Toolkit
geliefert wird. Dieses ROPE Objekt ist wie ein Proxy zu verstehen, das als
Buffer dient. ROPE ist eine Sammlung von mehreren Komponenten. Generell kann
man diese Infrastruktur benutzen um entwedere in einem Client COM freundliche
Remote Procedure Calls an SOAP Endpunkte (der WebService ansich) zu senden oder
für einen SOAP Endpunkt einen Listener zu bauen. Sie müssen nur die ROPE.dll
mit regsvr32.exe im System registrieren. Dank ROPE kann man zum Beispiel mit
Visual Basic 6.0 ganz einfach einen SOAP Call erzeugen und eine Web Method
eines Web Services konsumieren:
Dim myProxy As New
ROPE.Proxy 'Erzeugen des Proxys
myProxy.LoadServicesDescription icURI,
"http://localhost/soapdemo/services.xml" Laden der Service
Beschreibung
MsgBox
(myProxy.GetServerTime()) 'Aufrufen der WebService Method