Zum Inhalt springen

„Perl Web Server Gateway Interface“ – Versionsunterschied

aus Wikipedia, der freien Enzyklopädie
[gesichtete Version][gesichtete Version]
Inhalt gelöscht Inhalt hinzugefügt
Löschvorschlag: bleibt
K Gr
Zeile 16: Zeile 16:
Das '''Perl Web Server Gateway Interface''' ('''''PSGI''''') ist eine Schnittstelle zwischen [[Webserver]]n und [[Webanwendung]]en.
Das '''Perl Web Server Gateway Interface''' ('''''PSGI''''') ist eine Schnittstelle zwischen [[Webserver]]n und [[Webanwendung]]en.


Inspiriert vom Pythons [[Web Server Gateway Interface|WSGI]] und Rubys [[Rack (Webserver-Interface)|Rack]] wurde es entwickelt, um die [[Plattformunabhängigkeit]] von Webanwendungen zu fördern und deren Erstellung zu vereinfachen. Es ist eine Art Nachfolger des [[Common Gateway Interface|CGI]]-Moduls, das seit [[Perl (Programmiersprache)|Perl]] 5.22 nicht mehr im Core-Paket enthalten ist.
Inspiriert von Pythons [[Web Server Gateway Interface|WSGI]] und Rubys [[Rack (Webserver-Interface)|Rack]] wurde es entwickelt, um die [[Plattformunabhängigkeit]] von Webanwendungen zu fördern und deren Erstellung zu vereinfachen. Es ist eine Art Nachfolger des [[Common Gateway Interface|CGI]]-Moduls, das seit [[Perl (Programmiersprache)|Perl]] 5.22 nicht mehr im Core-Paket enthalten ist.


PSGI-Server werden oft auch in Anlehnung an [[Servlet|Java Servlets]] ''PSGI Application Container'' genannt.
PSGI-Server werden oft auch in Anlehnung an [[Servlet|Java Servlets]] ''PSGI Application Container'' genannt.

Version vom 7. Dezember 2015, 00:51 Uhr

PSGI: Perl Web Server Gateway Interface
Basisdaten

Entwickler Tatsuhiko Miyagawa und andere
Aktuelle Version 1.102
Betriebssystem plattformunabhängig
Programmier­sprache Perl
Kategorie Middleware
Lizenz Creative Commons by-sa
Website

Das Perl Web Server Gateway Interface (PSGI) ist eine Schnittstelle zwischen Webservern und Webanwendungen.

Inspiriert von Pythons WSGI und Rubys Rack wurde es entwickelt, um die Plattformunabhängigkeit von Webanwendungen zu fördern und deren Erstellung zu vereinfachen. Es ist eine Art Nachfolger des CGI-Moduls, das seit Perl 5.22 nicht mehr im Core-Paket enthalten ist.

PSGI-Server werden oft auch in Anlehnung an Java Servlets PSGI Application Container genannt.

Unterschiede zum CGI

Beim Standard-CGI werden die Daten (wie zum Beispiel aus Webformularen) vom Webserver (zum Beispiel Apache) via Umgebungsvariablen an den Perl-Interpreter übermittelt, der dafür immer wieder in einem neuen Prozess starten muss. Bei PSGI erhält jede Anwendung beim Aufruf eine Referenz auf einen Hash (mit Variablen ähnlich wie beim CGI). Dabei ist der Webserver selber entweder

  • ein eigener voller Perl-Webserver (wie Starman, plackup usw.),
  • ein Perl-Daemon, welcher von einem Webserver aufgerufen wird (wie FastCGI) oder
  • ein im Webserver eingebetteter Perl-Prozess (wie mod_perl).

CGI erwartet von den Applikationen auch, dass diese HTTP-Header und den eigentlichen Inhalt nach STDOUT schreiben. PSGI erwartet von den Anwendungen ein Array mit drei Elementen, die unter anderem auch den Statuscode enthalten.

PSGI wurde jedoch bewusst ähnlich wie CGI aufgebaut, um einen Umstieg und eine Weiterverwendung von CGI-Anwendungen zu ermöglichen.

Verwendung

Viele Web-Frameworks verwenden PSGI, wie zum Beispiel Catalyst (BBC iPlayer)[1], Mason/Poet (Amazon.com, Delicious, Hearst Magazines, DynDNS)[2], Dancer und viele mehr.

Beispiel

Das folgende einfache Beispiel fügt jeder PSGI-Anwendung das HTTP-Header-Feld X-Hello-World hinzu (und gibt den Inhalt Hello World zurück and den Client).

# $app ist eine einfache PSGI-Anwendung
my $app = sub {
    my $env = shift;
    return [ '200',
             [ 'Content-Type' => 'text/plain' ],
             [ "Hello World" ] ];
};
 
# $xheader ist ein Stück sogenannte Middleware um $app herum
my $xheader = sub {
    my $env = shift;
    my $res = $app->($env);
    push @{$res->[1]}, 'X-Hello-World' => 1;
    return $res;
};

Einzelnachweise

  1. Catalyst Sites (abgerufen im November 2015)
  2. Mason Sites (abgerufen im November 2015)
  • Website (auf CPAN, engl., abgerufen im November 2015)
  • Johnson, Lee: Documentation for alternative solutions to CGI.pm (auf CPAN, engl., abgerufen im November 2015)
  • Miyagawa, Tatsuhiko: Vortrag (Slides) auf der O'Reilly OSCON im Juli 2010 (engl., abgerufen im November 2015)
  • PSGI/Plack, Superglue interface between perl web application frameworks and web servers, just like Perl is the duct tape of the internet. (engl., abgerufen im November 2015)