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
Keine Bearbeitungszusammenfassung
Kat.
 
Zeile 1: Zeile 1:
{{Infobox Software
{{Infobox Software
|Name = PSGI: Perl Web Server Gateway Interface
|Name =
|Logo =
|Logo =
|Screenshot =
|Screenshot =
Zeile 28: Zeile 28:
* ein im Webserver eingebetteter Perl-Prozess (wie ''[[mod_perl]]'').
* ein im Webserver eingebetteter Perl-Prozess (wie ''[[mod_perl]]'').


CGI erwartet von den Applikationen, dass diese die [[HTTP-Header]] und den eigentlichen Inhalt nach [[Standard-Datenströme #STDOUT|STDOUT]] schreiben. Dagegen erwartet PSGI von den Anwendungen ein [[Feld (Datentyp)|Array]] mit drei Elementen, die u. a. den [[HTTP-Statuscode]] enthalten.
CGI erwartet von den Applikationen, dass diese die [[HTTP-Header]] und den eigentlichen Inhalt nach [[Standard-Datenströme #STDOUT|STDOUT]] schreiben. Dagegen erwartet PSGI von den Anwendungen ein [[Array (Datentyp)|Array]] mit drei Elementen, die u. a. den [[HTTP-Statuscode]] enthalten.


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


== Verwendung ==
== Verwendung ==
Viele Perl-[[Web-Framework]]s verwenden PSGI, z. B.
Viele Perl-[[Webframework]]s verwenden PSGI, z. B.
* ''[[Catalyst Web Framework|Catalyst]]'' ([[British Broadcasting Corporation|BBC]] iPlayer)<ref>[http://www.catalystframework.org/#sites Catalyst] Sites (abgerufen im November 2015)</ref>
* ''[[Catalyst Web Framework|Catalyst]]'' ([[British Broadcasting Corporation|BBC]] iPlayer)<ref>[http://www.catalystframework.org/#sites Catalyst] Sites (abgerufen im November 2015)</ref>
* ''[[Mason (Perl)|Mason]]/Poet'' ([[Amazon.com]], [[Delicious (Onlinedienst)|Delicious]], [[Hearst Corporation|Hearst Magazines]], DynDNS)<ref>[http://www.masonhq.com/sites Mason] Sites (abgerufen im November 2015)</ref>
* ''[[Mason (Perl)|Mason]]/Poet'' ([[Amazon.com]], [[Delicious (Onlinedienst)|Delicious]], [[Hearst Corporation|Hearst Magazines]], DynDNS)<ref>[http://www.masonhq.com/sites Mason] Sites (abgerufen im November 2015)</ref>
Zeile 64: Zeile 64:
* [https://metacpan.org/pod/PSGI ''PSGI''] auf meta[[CPAN|cpan]].org (englisch)
* [https://metacpan.org/pod/PSGI ''PSGI''] auf meta[[CPAN|cpan]].org (englisch)
* Johnson, Lee: [http://search.cpan.org/~leejo/CGI-Alternatives-0.14/lib/CGI/Alternatives.pm Documentation for alternative solutions to CGI.pm] (auf CPAN, engl., abgerufen im November 2015)
* Johnson, Lee: [http://search.cpan.org/~leejo/CGI-Alternatives-0.14/lib/CGI/Alternatives.pm Documentation for alternative solutions to CGI.pm] (auf CPAN, engl., abgerufen im November 2015)
* Miyagawa, Tatsuhiko: [http://de.slideshare.net/miyagawa/plack-at-oscon-2010 Vortrag (Slides)] auf der O’Reilly OSCON im Juli 2010 (engl., abgerufen im November 2015)
* Miyagawa, Tatsuhiko: [http://de.slideshare.net/miyagawa/plack-at-oscon-2010 Vortrag (Slides)] auf der O’Reilly OSCON im Juli 2010 (englisch, abgerufen im November 2015)
* [http://plackperl.org/ 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)
* [http://plackperl.org/ PSGI/Plack], Superglue interface between perl web application frameworks and web servers, just like Perl is the duct tape of the internet. (englisch, abgerufen im November 2015)


{{Navigationsleiste Webserver-Schnittstellen}}
{{Navigationsleiste Webserver-Schnittstellen}}


[[Kategorie:Web-Entwicklung|Psgi]]
[[Kategorie:Webserver]]
[[Kategorie:Schnittstelle (Software)]]
[[Kategorie:Schnittstelle (Software)]]
[[Kategorie:Perl (Programmiersprache)]]
[[Kategorie:Perl (Programmiersprache)]]

Aktuelle Version vom 17. Mai 2025, 03:05 Uhr

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
PSGI auf metacpan.org

Das Perl Web Server Gateway Interface (PSGI) ist eine Schnittstelle zwischen Webservern und in Perl geschriebenen 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

[Bearbeiten | Quelltext bearbeiten]

Beim Standard-CGI werden die Daten (z. B. aus Webformularen) vom Webserver (z. B. Apache) via Umgebungsvariablen an den Perl-Interpreter übermittelt, der dafür immer wieder in einem neuen Prozess starten muss.

Bei PSGI dagegen erhält jede Anwendung beim Aufruf eine Referenz auf einen Hashwert (mit Variablen ähnlich wie bei CGI). Dabei ist der Webserver selbst 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, dass diese die HTTP-Header und den eigentlichen Inhalt nach STDOUT schreiben. Dagegen erwartet PSGI von den Anwendungen ein Array mit drei Elementen, die u. a. den HTTP-Statuscode enthalten.

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

Viele Perl-Webframeworks verwenden PSGI, z. B.

Das folgende Beispiel fügt jeder PSGI-Anwendung das HTTP-Header-Feld X-Hello-World hinzu (und gibt den Inhalt Hello World zurück an 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

[Bearbeiten | Quelltext bearbeiten]
  1. Catalyst Sites (abgerufen im November 2015)
  2. Mason Sites (abgerufen im November 2015)
  • PSGI auf metacpan.org (englisch)
  • 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 (englisch, 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. (englisch, abgerufen im November 2015)