hotti: Name für Entwurfsmuster - Frontcontroller

Beitrag lesen

hi tami,

im Grunde ist es aber ziemlich Latte,

Was heißt hier Latte? Ungezählte Autoren erklären auf ungezählten Seiten, wie ihre Frameworks funktioniern. Sie schreiben sehr viel im Verhältnis zu dem, was sie erklären ;)

Ich erkläre auf einer einzigen A4-Seite, wie mein FW funktioniert, erkläre dabei nebenbei mod_perl und nenne in dem Zusammenhang eine Handvoll bekannter Design-Patterns die drin stecken ;)

was hinter dem Frontcontroller funktioniert, und ob der aus Apache-Sicht ein Client ist oder nicht. Das Pattern bezieht sich darauf, dass alle Requests über den Front-Controller gehen, ausnahmslos.

So ist das auch in meinem FW. Aber scheiß auf Design-Patterns ;)

Und im FrontController wird entschieden, wie zu verfahren ist.

Genau. Und: Was zu machen ist, das wissen die Subklassen. Btw., die kann ich auch erweitern, Beispiel von gestern:

/feedback.html        => class MVC::Feedback
/feedback_attach.html => class MVC::Feedback::Attach

In der Erweiterung wird nur die control()-Method überschrieben und das Template ist ein Anderes (Mailformular zum Senden von Mails mit Dateianlagen).

Die Zuordnung von Request /abc/def scheint mir bei Dir ähnlich wie im schon erläuterten ZF. Der Request-Path wird einer Funktion einer Klasse zugeordnet. Das ist aber (im ZF zumindest) schon eine Form von (Standard-)Routing.

Die Klassenbindung (URL <=> Class) ist der einzige Weg, ein FW skalierbar, überschaubar, wartungsfreundlich, teamgefällig und so zu bauen, dass zum Entwickeln von Erweiterungen Grundkenntnisse ausreichen. Da bin ich nicht der Einzige, der zu dieser Erkenntnis gelangt ist ;)

Btw., eine Factory, verbunden mit dem automatischen Laden weiterer Klassen und Methoden (Lazy Load, Lazy Creation), kriegt unter mod_perl eine ganz andere Dimension: Aus dem Dateisystem werden Sourcen NUR einmal geladen und kompiliert (also nicht beim Server-Start und auch nicht bei jedem Request, sondern nur beim Ersten Request entsprechend der Klassenbindung). Danach verbleibt der CODE im Hauptspeicher solange, bis der Apache neu gestartet wird. Es gibt Leute, die so ziemlich alles beim Apache-Start in den Hauptspeicher RAMmeln, kommen dann aber arg in Zeitnot, wenn dabei was schiefgehen sollte. Dann heißt es nämlich, Logs zu gucken und solange steht ALLES.

Schöne Grüße,
  Horst, das Haselhuhn ;)