Categories: Software

Ein Web Service mit SOAP::Lite

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.

Page: 1 2 3 4

ZDNet.de Redaktion

Recent Posts

Lags beim Online-Gaming? DSL-Vergleich und andere Tipps schaffen Abhilfe

Beim Online-Gaming kommt es nicht nur auf das eigene Können an. Auch die technischen Voraussetzungen…

2 Tagen ago

GenKI-Fortbildung immer noch Mangelware

Fast jedes zweite Unternehmen bietet keinerlei Schulungen an. In den übrigen Betrieben profitieren oft nur…

2 Tagen ago

Netzwerk-Portfolio für das KI-Zeitalter

Huawei stellt auf der Connect Europe 2024 in Paris mit Xinghe Intelligent Network eine erweiterte…

2 Tagen ago

Internet-Tempo in Deutschland: Viel Luft nach oben

Höchste Zeit für eine schnelle Kupfer-Glas-Migration. Bis 2030 soll in Deutschland Glasfaser flächendeckend ausgerollt sein.

2 Tagen ago

Erste Entwickler-Preview von Android 16 verfügbar

Schon im April 2025 soll Android 16 den Status Plattformstabilität erreichen. Entwicklern gibt Google danach…

2 Tagen ago

Kaspersky warnt vor Cyberangriff auf PyPI-Lieferkette

Die Hintermänner setzen KI-Chatbot-Tools als Köder ein. Opfer fangen sich den Infostealer JarkaStealer ein.

3 Tagen ago