Webservices mit PHP selbst gemacht
Webservices haben sich für den Datenaustausch zwischen einzelnen Systemen bewährt. Inzwischen gibt es auch für PHP ausreichend Bibliotheken, um sowohl Clients als auch Server damit zu entwickeln.

Was ist ein Webservice? Die Antwort ist eigentlich ganz einfach: Ein Webservice ist ein Dienst, der von einem System (Server) zur Verfügung gestellt wird und der von einem anderen System (Client) genutzt wird, um bestimmte Aufgaben auf dem Server ausführen zu lassen. Webservices sind in der Reg...
Was ist ein Webservice? Die Antwort ist eigentlich ganz einfach: Ein Webservice ist ein Dienst, der von einem System (Server) zur Verfügung gestellt wird und der von einem anderen System (Client) genutzt wird, um bestimmte Aufgaben auf dem Server ausführen zu lassen. Webservices sind in der Regel plattformneutral und interoperabel.
Kommt Ihnen das bekannt vor? Legt man die Definitionsmesslatte nicht allzu hoch an, trifft dies auch auf die Anforderung von Webseiten von einem Webserver zu. Webservices sind im Gegensatz dazu meist auf Einzelfunktionen bezogen, die man auf einem anderen System aufrufen möchte.
Das Ziel ist es, Methoden des Webservices über das Netzwerk hinweg aufzurufen, um von dort Daten geliefert zu bekommen. Dieses Verhalten wird meist Remote Method Invocation (RMI) oder Remote Procedure Call (RPC) genannt. Der Webservice kann so räumlich getrennt vom aufrufenden System sein.
Solche Arten von Dienste sind beileibe nichts Neues. RMI oder RPC wird bereits seit Jahrzehnten eingesetzt. Webservices nutzen im Vergleich zu ihren Vorgängertechnologien allerdings bewährte Web-Übertragungsprotokolle, wie beispielsweise HTTP oder E-Mail, um ihre Daten auszutauschen.
SOAP Envelope
Das bis heute populärste Protokoll zur Umsetzung von Webservices ist SOAP. Dieses Ende der 90er-Jahre entwickelte Kommunikationsprotokoll hat sich über die Jahre hinweg zum beherrschenden Webservice-Standard entwickelt. SOAP basiert komplett auf XML. Die Daten werden in einen sogenannten SOAP-Envelope verpackt, der die eigentliche Nutzlast transportiert.
Die Nutzlast können XML-Daten sein oder andere Informationen in verschiedenen Formaten. Damit sowohl Client als auch Server die gleiche Sprache sprechen und dadurch erst eine sinnvolle Kommunikation möglich wird, bedarf es einer Beschreibung der Webservice-Schnittstelle, die sowohl für den Server als auch für den Client bindend ist.
Der Client weiß anhand dieser Beschreibung, welche Methoden ein Service zur Verfügung stellt, welche Parameter diese Methoden erwarten oder zurückliefern und welche Datentypen dabei notwendig sind. Die gesamte Kette Client-Definition-Server ist beim SOAP-Standard einigermaßen komplex, da hierbei auf größtmögliche Flexibilität und Programmiersprachenunabhängigkeit geachtet wurde.
Da SOAP nicht an ein spezielles Kommunikationsformat gebunden ist, können SOAP-Nachrichten über verschiedene Wege übertragen werden. HTTP ist zwar das Populärste, allerdings sind auch E-Mail, direkte Socket-Übertragung und weitere Internetprotokolle möglich.
WSDL
SOAP-Webservices sind plattformneutral. Das bedeutet, dass Sie verschiedene Technologien mixen können. So ist es beispielsweise möglich, den Server in Java und den Client in PHP zu programmieren oder den Server in PHP und den Client in Flex. Nahezu alle Kombinationen sind denkbar.
Aufgrund der Plattformunabhängigkeit existiert eine ebenfalls plattformunabhängige Beschreibung der vorhandenen Services. Das Beschreibungsformat für SOAP-Webservices ist WSDL (Webservice Definition Language).
Hier wird in standardisierter Form beschrieben, welche Funktionen zur Verfügung stehen, welche Über- und Rückgabewerte diese Funktionen erwarten beziehungsweise liefern und von welchem Typ diese Parameter sind. Anhand dieser Definition können sowohl der Server als auch der Client die entsprechenden Schnittstellen zur Verfügung stellen.
Mit den heutigen Tools erfolgt die Erstellung dieser Beschreibung in der Regel automatisch. Eine Abbildung zu diesem Workshop zeigt ein kleines Beispiel für eine WSDL-Datei, in der eine einzelne Funktion definiert wird. Wie anhand dieses Beispiels bereits zu sehen ist, ist das WSDL relativ geschwätzig.
Automatisch generiert
Bei umfangreicheren Webservices, mit mehreren Funktionen und vielen Übergabeparameter werden WSDL-Dateien schnell mehrere Hundert oder Tausend Zeilen lang. Dies ist auch einer der Gründe, warum man WSDL-Dateien selten von Hand erstellt.