SOAP

Im Praxisteil des vorherigen Abschnittes werden Sie aufgefordert, den Clienten für eine Kommunikation zwischen zwei Programmen über TCP/IP zu programmieren. Wie Sie merken werden, ist es etwas mühsam, auf dieser TCP/IP-Ebene einen Serverdienst zu nutzen. Daher wurden Verfahren entwickelt, um den Zugriff auf Webdienste zu vereinfachen.

Sie wissen ja bereits, dass man für Berechnungen Funktionen schreibt, die mit Parametern aufgerufen werden und Rückgabewerte zurückliefern. Die Funktionen werden dann durch einen Methodenaufruf lokal ausgeführt.

Der Zugriff auf Webdienste ist nun nichts anderes als ein gewöhnlicher Methodenaufruf, bis auf die Tatsache, dass die Methode nicht auf dem Clienten, sondern auf dem Server ausgeführt wird. Der Aufruf einer Methode auf einem Server, der in diesem Fall als Webserver bezeichnet wird, wird „Remote Procedure Call“ (RPC) genannt. Ein Webserver kann mehrere Webdienste (engl. Webservices) anbieten. Der entfernte Aufruf einer Methode benötigt natürlich eine gewisse Konvention, damit der Server die Anfrage von einem Clienten interpretieren kann und der Client seinerseits die Antwort vom Server versteht. Genau diese Konvention wird durch den Standard SOAP („Service oriented architecture protocol“) festgelegt. SOAP nutzt den XML-Standard und ist somit plattformunabhängig.

Das Programm ruft über Aufrufparameter die lokale Funktion auf. Diese erstellt aus den Parametern eine Anfrage im SOAP-Format und schickt diese Anfrage über das Netzwerk an den Webserver. Der Webserver interpretiert nun die Parameter aus der Anfrage und führt die Funktion aus. Wenn die Funktion das Ergebnis zurückgeliefert hat, wird aus dem Ergebnis eine SOAP-Antwort erstellt und an den Clienten zurückgesendet. Der Client wertet nun die Antwort aus und die lokale Funktion kehrt mit diesen Rückgabewerten zurück.

Das Geniale dabei ist nun, dass einerseits die lokale Funktion automatisch aus der Beschreibung für den Webserver generiert werden kann und andererseits die Implementierung des Webdienstes auf dem Webserver in einer beliebigen Programmiersprache erfolgen kann.