SOAP::Lite bietet viele Module, die eine Vielzahl von Übertragungs-Protokollen unterstützen: POP3, SMTP, HTTP und TCP. Im Rahmen dieses Artikels werde ich mich auf den häufigsten Anwendungsfall beschränken, einen einfachen CGI-basierten Web Service, der über HTTP kommuniziert. Die folgenden Beispiele setzen voraus, dass Sie Zugang zu einem Web Server wie Apache oder IIS haben und wissen, wie man ihn konfiguriert, um Perl-basierte CGI-Skripte nutzen zu können. Sie brauchen also:
- SOAP::Lite Version 0.55
- Zugang zu einem Webserver, der Perl-basierte CGI-Skripte ausführen kann
- einen Text-Editor
Request-Handler für den Echo-Service
Der erste Schritt beim Erstellen eines Web Service besteht im Konstruieren des Request-Handlers – er enthält den Kern der Applikation, die nach außen als Web Service in Erscheinung tritt. SOAP::Lite macht das Bereitstellen von Services einfach, indem es automatisch Requests an die in Perl-Modulen enthaltenen Subroutinen versendet. SOAP::Lite verwendet den Namensraum des Requests, um festzustellen, an welches Perl-Modul der Request zu senden ist, und ruft in diesem Perl-Modul die Subroutine mit dem selben Namen wie die Request-Methode auf.
Aus diesem Grund ist unser Request-Handler in einem einfachen Perl-Modul enthalten. Das Perl-Modul enthält eine Subroutine für jede nach außen sichtbare Methode des Web Service. In unserem Beispiel eines Echo-Service, der nur aus einer Methode namens Echo besteht, würde man ein Perl-Modul namens Echo.pm erstellen, das aus einer einzigen Subroutine namens echo besteht:
1 #!/usr/bin/perl 2 # Dateiname: Echo.pm 3 # Echo-Web Service Perl-Modul - an dieses Modul werden 4 # Requests an den Echo-Web Service gesendet. 5 # Autor: Byrne Reese 6 package Echo; 7 use strict; 8 sub echo { 9 my ($self,@args) = @_; 10 return join(",",@args); 11 } 12 1;
In Zeile 6 legen wir den Namen des Packages für das Modul und damit den Namen unseres Web Services fest. Der gewählte Name kann nicht völlig willkürlich gewählt werden. Vielmehr gibt der Name des Service/Package den Namensraum vor, auf den der Service antwortet. In unserem Beispiel ist der Name einfach: Echo. In den Zeilen 8 bis 11 definieren wir die einzige Methode, die dieser Web Service zur Verfügung stellt, als Perl-Subroutine. Der Name der Methode ist Echo, und sie verlangt ein Argument. Falls der Anwender mehr als ein Argument an die Echo-Methode übergibt, wird die join-Funktion von Perl benutzt (Zeile 10), um alle Parameter miteinander zu verknüpfen und als Response zurückzugeben.
Sie werden sich vielleicht wundern, dass von SOAP::Lite in dem Beispiel oben gar nicht die Rede ist. Tatsächlich könnte das Skript ein beliebiges Perl-Modul auf einem Webserver sein und so jeden gewünschten Web Service bereitstellen. Aber hier ist Vorsicht geboten, denn einen Web Service einfach auf diese Weise zu implementieren, kann gefährlich sein, da dadurch der gesamte Webserver anfällig für Angriffe werden könnte.
Neueste Kommentare
Noch keine Kommentare zu Ein Web Service mit SOAP::Lite
Kommentar hinzufügenVielen Dank für Ihren Kommentar.
Ihr Kommentar wurde gespeichert und wartet auf Moderation.