Ausführende Instanz für Remote Procedure Call ist die Framework-Instanz

Per HTTP werden Methodname und Funktions-Argumente an den Server gesendet

Die Frage ist, welche Instanz sich für die Ausführung der serverseitigen Methode zuständig zeichnet oder ob die Methode einfach so, von irgendeiner Klasse ausgeführt werden soll. Eine mögliche Antwort ergibt sich aus dem Verwendungszweck. Wenn es um das Managen von Content geht, ist zumindest klar, dass die serverseitige Klasse eine sehr ähnliche Aufgabe hat wie eine Klasse, welche für das Ausliefern von Content zuständig ist. Des Weiteren ist für den Übertragungsweg HTTP serverseitig ein URL erforderlich. Infolge der Bindung von URLs an Klassen liefert das Framework die besten Voraussetzungen für die Ausführung von Remote Procedure Calls. Ein universeller Parser erlaubt außerdem das Parsen beliebiger, im Request vorliegender Content-Types wie z.B.: application/x-www-form-urlencoded multipart/form-data application/json application/xml usw. Damit ist schonmal die Frage der Verpackung gelöst: klassisch XML. Es sind aber auch beliebige andere Content-Types möglich. Unabhängig vom Content-Type liefert der Parser stets dieselben Datenstrukturen. Ergo kann die ausführende Instanz nur eine Instanz einer zum Framework gehörigen Subklasse sein. Damit stehen dieser Instanz auch sämtliche zum Framework gehörigen Libraries zur Verfügung oder mit anderen Worten ausgedrückt: Einem Remote Procedure Call stehen sämtliche zum Framework gehörigen Schnittstellen zur Verfügung, was den Zugriff auf serverseitige Daten betrifft. Der Vollständigkeit halber noch ein bischen CODE: Der Parser ergibt den Namen der auszuführenden Methode: my $methodname = $self->param('methodname'); Nun muss festgestellt werden, ob es die Methode gibt im Scope der eigenen Klasse: my $code = $self->can($methodname) || die "Eine solche Methode gibt es nicht"; Schließlich werden die Argumente ermittelt und der Code ausgeführt: my @args = $self->param('args'); my $rv = $self->$code( @args ); Anmerkung: $self ist die Instanz der an den URL gebundenen Subklasse und die Fehlerbehandlung erfolgt wie im Framework üblich über das Exception-Modell. Der Return-Value $rv wird je nach Anforderung serialisiert. So kann $rv auch komplexe Datenstrukturen enthalten, die als XML in der Response gesendet werden. Auf die bewährte Art und Weise der Fabrik wird ganz einfach eine Methode aufgerufen: $self->make_xml( $rv ); wobei die aufgerufene Methode make_xml() die XML-Response gleich in den dafür vorgesehenen Ausgabepuffer {CONTENT} schreibt. Gleichermaßen setzt make_xml() auch den richtigen Content-Type: application/xml für die Response und alles Andere wird sodann vom Framework erledigt.

Datenschutzerklärung: Diese Seite dient rein privaten Zwecken. Auf den für diese Domäne installierten Seiten werden grundsätzlich keine personenbezogenen Daten erhoben. Das Loggen der Zugriffe mit Ihrer Remote Adresse erfolgt beim Provider soweit das technisch erforderlich ist. s​os­@rolf­rost.de.