Datentausch per Webservice

Teil 3: Webservices mit PHP selbst gemacht

In der Regel wird man die Erstellung der WSDL-Datei und das Starten des Servers in einer Datei vereinen.

require_once "HelloWorldService.php";
require_once "Zend/Soap/Server.php";
require_once "Zend/Soap/
AutoDiscover.php";
if(isset($_GET['wsdl'])) {
$autodiscover = new Zend_Soap_
AutoDiscover();
$autodiscover->setClass
('HelloWorldService');
$autodiscover->handle();
}
else {
$soap = new Zend_Soap_Server
("http://localhost/service.php?wsdl");
$soap->setClass
('HelloWorldService');
$soap->handle();
}

SOAP-Client

Die Verwendung dieses Webservices kann mit verschiedenen Programmiersprachen erfolgen. Dies kann selbstverständlich auch PHP sein. Auch hierzu bietet das Zend- Framework entsprechende Klassen an. Der im folgenden Listing gezeigte Aufruf der Webservice-Klasse kann selbstverständlich auf einem ganz anderen Server erfolgen, dies ist ja auch der Sinn und Zweck eines Webservices. Für unsere Zwecke genügt es aber, den Client auf demselben Webserver zu platzieren wie den Server.

require_once "Zend/Exception.php";
require_once "Zend/Soap/Client.php";
try {
// Erzeugung des Clients anhand
der WSDL
$client=new Zend_Soap_Client(
"http://localhost/
service.php?wsdl");
$string=$client->sayHello("Timo");
echo $string;
}
catch(Zend_Exception $e) {
echo $e->getMessage();
}

Der Quelltext ist einfacher als gedacht? Dies liegt an der Implementierung der Zend-Klassen, die alle notwendigen Arbeiten übernehmen. Der Klasse Zend_Soap_Client wird die URL übergeben, unter der die WSDL-Datei erreichbar ist.

In diesem Fall ist dies das PHP-Skript, welches die WSDL-Definition generiert. Die Client-Klasse des Frameworks stellt anschließend alle in der Definition festgelegten Methoden zur Verfügung, die wie im Beispiel zu sehen ist, wie ganz normale PHP-Funktionen aufgerufen werden können.

Natürliche Grenzen

Diese Art des Zugriffes auf einen Webserver eignet sich nur bis zu einer gewissen Grenze. Je mehr Anfragen an einen Server erstellt werden, beispielsweise, weil Sie viele Besucher einer Seite haben, desto ungeeigneter wird diese Methode einen Client zu erzeugen.

Dies liegt schlicht und ergreifend daran, dass der Client jedes Mal anhand der WSDL-Datei erzeugt wird.

Wie bereits erwähnt, verändert sich die Schnittstelle eines Webservices eher selten, sodass es wenig Sinn macht, die Klassen immer neu zu erstellen.

SOAP via PEAR-Klasse

Neben den hier gezeigten SOAP-Klassen des Zend Frameworks gibt es noch weitere empfehlenswerte SOAP-Implementierungen für PHP. Gute Beispiele hierfür sind die PEAR-Klasse Services_Webservice () oder das WSO2 Framework ().

Durch die allgemeine Verbreitung von SOAP gibt es eine Menge an SOAP-Webservices, die frei im Netz verfügbar sind. Darunter Dienste zur Ermittlung von Wetterdaten, Geo-Informationen, Suche in Katalogen, Suche in Bilddatenbanken und vieles andere mehr.

Mehr zum Thema

HTML5: Quick Reference Guide
Ratgeber: "HTML5"

Die wichtigsten Tags auf einen Blick: In unserem praktischen Arbeitsblatt finden Sie einen wertvollen Begleiter für die Umstellung Ihrer Webprojekte…
internet, webdesign, google, content, ranking, seo, suchmaschine
Ratgeber: Urheberrecht

Einzigartige Inhalte bieten Lesern Mehrwert und sind ein wichtiges Qualitätsmerkmal. Ärgerlich, wenn sich jemand durch Kopieren an fremden…
Die besten HTML5-Tipps
Neue Tipps & Tricks für blitz.io

Wer die Leistung einer Applikation ermitteln möchte, braucht keine Skripte zu schreiben, sondern kann einen der zahlreichen Online-Dienste…
image.jpg
Ratgeber: Webentwicklung

Die clientseitige Javascript-Entwicklung bietet fast keine Entwicklungsumgebungen und auch keine vernünftigen Werkzeuge zur Fehlersuche. Eine der…
internet, webdesign, meteor, webapplikationen
Ratgeber

Mit Meteor sollen Entwickler in kurzer Zeit Umgebungen für Webapplikationen erstellen können, ohne sich um lästige Details kümmern zu müssen. Wir…