Ein Web Service mit SOAP::Lite

Der Request-Dispatcher ist der Bestandteil des Service, der direkt mit dem Aufrufer des Web Service in Verbindung tritt. Er befindet sich auf Ihrem Webserver und wird ebenfalls als CGI-Skript aufgerufen. Das folgende Beispiel zeigt die Implementierung eines ganz einfachen Request-Dispatchers:


1 #!/usr/bin/perl -w
2 # Dateiname: echo.cgi
3 # Echo-Web Service - dieser Web Service gibt jeden Input
4 # als Echo in seiner Antwort zurück.
5 # Autor: Byrne Reese
6 use Echo;
7 use SOAP::Transport::HTTP;
8 SOAP::Transport::HTTP::CGI
9 ->dispatch_to('Echo')
10 ->handle;

Wie man sieht, macht das SOAP::Transport::HTTP::CGI-Package das Weiterleiten von SOAP-Requests an ein Perl-Modul zu einer einfachen Sache.

In Zeile 6 importieren wir den Request-Handler für unseren Service. Dies ist das Perl-Modul, das die Subroutinen für eingehende SOAP-Meldungen enthält. In Zeile 7 importieren wir das SOAP::Lite-Package, welches den gesamten notwendigen Programmcode für die Bearbeitung von eingehenden SOAP-Requests enthält. In Zeile 9 wird das Perl-Modul für die Bearbeitung eingehender Requests festgelegt. In unserem Beispiel sollte der an dispatch_to übergebene Wert mit dem Namen des Moduls in Zeile 6 übereinstimmen. Und schließlich wird in Zeile 10 SOAP::Lite aufgerufen, um den Request zu bearbeiten.

SOAP::Lite ist in der Lage, eingehende Requests an mehrere Module weiterzuleiten. Diese Fähigkeit erlaubt es, alle eingehenden SOAP-Anfragen an einer einzigen Stelle entgegenzunehmen. Dafür muss man nur jedes Modul mit seinem vollständig qualifizierten Namen als Argument an dispatch_to übergeben. Für noch mehr Flexibilität kann man den Pfad zu einem Verzeichnis angeben, das eine Reihe von Perl-Modulen enthält, an die SOAP::Lite Requests weitergeleitet werden. Das folgende Beispiel kann Requests an die Perl-Module My::Module::Name und My::Other::Module weiterleiten – sowie an jedes Perl-Modul, das im Verzeichnis /Your/Path/To/Deployed/Modules installiert ist:


SOAP::Transport::HTTP::CGI
->dispatch_to('/Ihr/Pfad/zu/verwendeten/Modulen',
'My::Module::Name', 'My::Other::Module')
->handle;

Um zusammenzufassen, wie das funktioniert, wollen wir einen Blick auf etwas XML werfen. Wenn SOAP::Transport::HTTP::CGI->handle() aufgerufen wird, ruft SOAP::Lite die Subroutine mit demselben Namen wie das Root-Element des SOAP-Body auf. Es sucht nach dieser Subroutine in dem Perl-Modul, das durch den Namensraum des Root-Elements des SOAP-Body bestimmt ist. Der folgende SOAP-Request führt z.B. dazu, dass SOAP::Lite den Request an die Subroutine mit dem Namen myMethod weiterleitet, die im Perl-Modul MyWebService.pm zu finden ist:


<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Body>
<namesp1:myMethod xmlns:namesp1="urn:MyWebService">
<foo>bar</foo>
</namesp1:echo>
</SOAP-ENV:Body>

Themenseiten: Software, Webentwicklung

Fanden Sie diesen Artikel nützlich?
Content Loading ...
Whitepaper

Artikel empfehlen:

Neueste Kommentare 

Noch keine Kommentare zu Ein Web Service mit SOAP::Lite

Kommentar hinzufügen

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert *