dWing — die Welt ist nicht gerecht

sign in

Web Frameworks: Model, View und Controller

In letzter Zeit beschäftige ich mich wieder mehr mit Web Frameworks, da ich auf der Arbeit mit CakePHP arbeiten muss und nebenbei node.js und Express lerne. Und natürlich existiert noch mein dWing, das im Prinzip meine Meinung zum Thema Web Frameworks in Code gießt.

Ich habe mir vorgenommen in einigen Beiträgen zu den Themen Object-Relation-Mapping (ORM) bzw ActiveRecord, Push/Pull-Modell, Lazy-Loading und Asnyc Callbacks zu sprechen.


Heute geht es allerdings um Model-View-Controller. Dieses Entwurfsmuster ist dazu gedacht die Speicherung der Daten, die Logik und die Darstellung zu trennen. Persönlich finde ich die Logikschicht absolut überbewertet. Ich finde in modernen Anwendungen sollte es sich mehr um die Grundobjekte drehen und was ich mit diesen machen kann. Und auch dort ist weniger mehr. Denn eigentlich muss ich nur vier Operationen machen können. Diese auslesen (read, GET), erstellen (create, POST), bearbeiten (update, PUT) und löschen (delete, DELETE). In Klammern habe ich jeweils die Begriffe aus CRUD und den HTTP Methoden angegeben.

Im Grunde genommen geht es nicht darum was ich mache, sondern mit welchem Objekt ich dies tue. Bewerte ich einen Eintrag auf dWing dann gibt es keinerlei bewerte Operation auf meinen Einträgen. Stattdessen erstelle ich eine Bewertung zu diesem Eintrag. Somit habe ein weiteres Objekt, auf das ich eine der vier Grundoperationen (erstellen) anwende. So einfach ist dies.

Mein dWing ist genau nach diesem Muster aufgebaut. Meine Ressourcen implementieren einfach das RESTful Interface und alles andere geschieht automatisch. In Express gibt es das express-resource Modul, welches auch automatisch die Resource laden kann. Sehr fein :-) Bei CakePHP sehe ich keine solche Ressourcenorientierung. Dort werden die URLs nach dem /controller/methode Muster interpretiert. Andere Routen können definiert werden aber ich halte dies für recht unbequem.

Statische Seiten werden dort auch über einen Controller geleitet. Bei dWing geschieht dies automatisch im normalen Routing. Kein großer Unterschied. Bei Express musste ich mir selbst auch einen Router basteln der auf ein statisches Template umleitet.

Die Template Systeme von Cake und Express folgen dem Layout Prinzip. Also ist ein Layout Template definiert, dem z.b. als body variable der Inhalt übergeben wird. In dWing inkludiert jedes Template Kopf und Fuß einzeln. Etwas umständlicher, allerdings wird es so möglich das ich den Inhalt des Titel Elementes in meinem statischen Template definiere bevor ich den Kopf einbinde. In Cake und Express ist es nicht möglich solche Variablen vom Template zum Layout zu übergeben. Dafür muss ich mir noch etwas überlegen.

Bei dWing haben die Templates allgemein mehr Fähigkeiten, mehr dazu im Teil Push/Pull und ActiveRecord.


Comments


Write comment

You need to sign in first.