Software & Infrastruktur

Einblicke in die neue Komponente: eZ Components lernt MVC

Seite 2 / 2

Der Controller greift auf die Applikationsmodelle zu und implementiert die Applikationslogik. Zurückgeben muss er eine Struct, die allerdings beliebige Informationen enthalten kann. Nachdem diese Struct durch einen Filterstack gelaufen ist, entscheidet die View über die Darstellung der vom Controller
generierten Inhalte. Dazu kann sie auf die Informationen in der Rückgabe des Controllers und des Requests zurückgreifen.

Gerade an dieser Stelle ist dem Entwickler die volle Freiheit gelassen, wie die Kommunikation zwischen Controller und View aussehen kann. In einer rein templatebasierten Applikation könnte gar der Name des Templates und eine Liste von Variablen übergeben werden – auch wenn damit der View-Logik eventuell
vorgegriffen wird und man sich leicht an ein spezielles Ausgabemedium bindet.

Ein anderes Modell wäre, dass der Controller nur „View-Structs“ erzeugt. Ein Struct der Klasse „myUserViewStruct“ könnte damit beispielsweise alle Benutzerinformationen enthalten. Der View-Manager wählt für die HTML-Präsentation dann ein spezielles Template: „templates/user.tpl“. Ein JSON- oder XML-View-Handler hingegen könnte das Objekt einfach entsprechend serialisieren und ausgeben.

In jedem Fall entscheidet der View-Handler über die letztendliche Darstellung der Inhalte. Die Art der Präsentation könnte beispielsweise über die Dateiendung in der Request-URL entschieden werden, so dass bei einer .html-URL der HTML-View-Handler vom View-Manager aufgerufen wird, und bei einer .js-Endung die Inhalte als JSON serialisiert werden.

Erneut ist es möglich, die Rückgabe der View mit einem Filter-Stack weiterzuverarbeiten. Mögliche Filter wären zum Beispiel eine Konvertierung in ein Character-Encoding, dass der Client des Besuchers versteht. Während des Entwicklungsprozesses ließe sich das generierte HTML auf Validität prüfen, wohingehend es im Produktivbetrieb komprimiert werden könnte.

Erst nach der Verarbeitung durch die Filter kommt der finale Schritt: die Ausgabe durch die Response-Writer. Auch hier ist eine protokollabhängige Abstraktion notwendig, weil im Falle von HTTP beispielsweise Character-Encoding- und Content-Type-HTTP-Header geschickt werden sollten, während der Aufbau einer E-Mail als Antwort auf einen E-Mail-Request diese Informationen anders verarbeitet. Jede der verwendeten Komponenten ist beliebig erweiterbar und die Anforderungen der Struct-Klassen sind äußerst flexibel. Mit den vorhandenen Implementierungen wird dem Benutzer trotzdem eine konzeptuelle Struktur mit auf den Weg gegeben und grundsätzliche Arbeit abgenommen.

Zusammenfassung

Der volle Prozess mag auf den ersten Blick komplex erscheinen, doch die Filter sind beispielsweise vollständig optional. Request-Parser und Response-Writer müssen bei der Entwicklung einer üblichen HTTP-Anwendung nicht angefasst werden. Die bereits implementierten Router entsprechen den bekannten und oft verwendeten Mechanismen und sollten zumindest für normale Web-Applikationen genügen. Damit ist lediglich die Implementierung von Controller und View notwendig. Alle anderen Bereiche können dann nach Bedarf erweitert werden, falls die eigenen Ansprüche über das Standardverhalten hinaus gehen.

Für die Zukunft ist eine Framework-Komponente innerhalb der eZ Components angedacht, die die bereits existierenden Komponenten wie Template für die Views oder Persistent Object für den Storage-Layer in den Business-Modellen integriert.

Weitere Neuigkeiten im Release

Auch wenn der Fokus auf der MVC-Komponente lag, gibt es eine Reihe von weiteren Neuigkeiten im aktuellen eZ-Components-Release. So kann die Document-Komponente nun zwischen den Dokumenten-Markup-Sprachen XHTML, Docbook, Wiki (Docbook-, Creole- und Confluence-Dialekt), ReStructured Text (RST) und dem eZ-Publish-eigenen „eZ XML“ konvertieren. Dazu wurden für RST und die Wiki-Sprachen Parser implementiert. Die XHTML-Konvertierungen hingegen verwenden einen konfigurierbaren Filter-Stack, um abhängig von den eingehenden Dokumenten Erkennungsheuristiken ab- oder anschalten zu können.

Die Webdav-Komponente [2], mit der sich einfach Webdav-Server für Daten im Dateisystem oder in eigenen Backends implementieren lassen, unterstützt nun sowohl Authentification als auch Locking. Erfolgreich getestet wurde der Server damit nicht nur mit den standardkonformen Clients wie Cadaver oder Nautilus, sondern auch mit den Webdav-Implementierungen der verschiedenen Windows-Versionen. In nahezu allen anderen Komponenten sind dazu noch weitere Features implementiert worden, die man in den Release-Notes nachlesen kann [3].

Bitte beachte unsere Community-Richtlinien

Wir freuen uns über kontroverse Diskussionen, die gerne auch mal hitzig geführt werden dürfen. Beleidigende, grob anstößige, rassistische und strafrechtlich relevante Äußerungen und Beiträge tolerieren wir nicht. Bitte achte darauf, dass du keine Texte veröffentlichst, für die du keine ausdrückliche Erlaubnis des Urhebers hast. Ebenfalls nicht erlaubt ist der Missbrauch der Webangebote unter t3n.de als Werbeplattform. Die Nennung von Produktnamen, Herstellern, Dienstleistern und Websites ist nur dann zulässig, wenn damit nicht vorrangig der Zweck der Werbung verfolgt wird. Wir behalten uns vor, Beiträge, die diese Regeln verletzen, zu löschen und Accounts zeitweilig oder auf Dauer zu sperren.

Trotz all dieser notwendigen Regeln: Diskutiere kontrovers, sage anderen deine Meinung, trage mit weiterführenden Informationen zum Wissensaustausch bei, aber bleibe dabei fair und respektiere die Meinung anderer. Wir wünschen Dir viel Spaß mit den Webangeboten von t3n und freuen uns auf spannende Beiträge.

Dein t3n-Team

Schreib den ersten Kommentar!

Melde dich mit deinem t3n Account an oder fülle die unteren Felder aus.

Bitte schalte deinen Adblocker für t3n.de aus!

Hey du! Schön, dass du hier bist. 😊

Bitte schalte deinen Adblocker für t3n.de aus, um diesen Artikel zu lesen.

Wir sind ein unabhängiger Publisher mit einem Team bestehend aus 65 fantastischen Menschen, aber ohne riesigen Konzern im Rücken. Banner und ähnliche Werbemittel sind für unsere Finanzierung sehr wichtig.

Danke für deine Unterstützung.

Digitales High Five,
Stephan Dörner (Chefredakteur t3n.de) & das gesamte t3n-Team

Anleitung zur Deaktivierung