hotti: Name für Entwurfsmuster - FrontController (Martin Fowler)

Beitrag lesen

Hakuna matata!
Das hast du immernoch nicht richtig verstanden. Du denkst auch viel kompliziert,

Ganz im Gegenteil, ich denke abstrakt.

Apache-ResponseHandler definiert die IO-Kapselung (2) und ist ansonsten nur ein anderer Name für die CGI-Schnittstelle.

Nein, das ist wieder falsch. Löse dich mal von CGI und serverseitigen Prozessen. Der ResponseHandler definiert eine Schnittstelle um den Antworttext eines HTTP-Servers zu parsen und eine Datenstruktur daraus zu machen, mit der man einfacher arbeiten kann als mit Text.

Es ist nicht ganz falsch, höchstens zu abstrakt formuliert meinerseits.

Fürs gegenseitige Verständnis:

CGI-Standard, mod_cgi

Im Webserver konfiguriert, z.B. über einen ScriptAlias, wird bei einem Request dieses Script aufgerufen und erzeugt einen serverseitigen Prozess. Ausgeführt wird die Package main.

PerlResponseHandler mod_perl

Ein im Webserver konfigurierter PerlResponseHandler definiert eine Methode mit dem Namen handler(). Bei einem Request wird diese Methode aufgerufen.

====Beide Betriebsmodi nutzen den CGI-Standard 1.1====

Freilich wird bei mod_perl der Request und die gesamte Kommunikation Serverprozess <=> Webserver gekapselt. Was haben wir denn im Request: URL, Request_Method, Parameter, HTTP/Version. Und genau hier haben wir zwei Möglichkeiten, entweder die ResponseHandler-API zu nutzen oder mit

PerlOptions +GlobalRequest

z.B. per CGI.pm auf STDIN und Request-Parameter zugreifen zu können. Und mit

PerlOptions +SetupEnv

schließlich haben wir auch den kompletten %ENV, wo u.a. drinsteht, dass die eigentliche Schnittselle CGI/1.1 ist. Anstelle selbst in den Hash %ENV zu greifen können wir auch Methoden der ResponseHandler-API nutzen.

Im Grunde kann sich die Verwendung der ResponseHandler-API beschränken auf das, was über die Kapselung erfolgen MUSS, weils nicht anders geht: IO nach STDOUT. Es steht dem Entwickler frei, das zu nutzen was er für zweckmäßiger hält.

Dir stehts natürlich auch frei, rauszufinden, wie ein ResponseHandler für mod_php eingerichtet wird. Vermutlich so, dass der Entwickler sich nicht so ums Detail kümmern muss wie einer aus der Perl-Fraktion. Funktional auf jeden Fall so wie oben beschrieben ;)