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>
Vernetzte Produkte müssen laut Cyber Resilience Act über Möglichkeiten zur Datenverschlüsselung und Zugangsverwaltung verfügen.
Das jüngste Update für Windows, macOS und Linux stopft drei Löcher. Eine Anfälligkeit setzt Nutzer…
Zwei von Google-Mitarbeitern entdeckte Schwachstellen werden bereits aktiv gegen Mac-Systeme mit Intel-Prozessoren eingesetzt. Sie erlauben…
Die Hintermänner haben es unter anderem auf Daten von Facebook-Geschäftskonten abgesehen. Opfer werden über angebliche…
Bis 2027 werden 90 Prozent der Unternehmen eine Hybrid-Cloud-Strategie umsetzen.
Apple belegt in der Statistik von Counterpoint die ersten drei Plätze. Samsungs Galaxy S24 schafft…