Entwicklung & Design

FLOW3 vs. Symfony2: Kampf der Giganten

Seite 4 / 4

Model, View, Controller?

Die Antwort auf die Frage, ob Symfony2 ein MVC-Framework ist? „Jein“. Denn Symfony2 kann genau soviel MVC wie all jene Frameworks, die ebenfalls meinen, MVC zu bieten. Ob nun Doctrine oder Propel als Model-Layer verwendet wird – der Fokus liegt bei Symfony2 auf „Separation of Concerns“; MVC ist in diesem Sinn also nur eine grobe Richtlinie auf dem Weg zu diesem Ziel.

Symfony2 enthält eine Reihe von überaus nützlichen Komponenten, um CLI-Kommandos zu entwickeln; primär jedoch konzentriert sich das Framework auf eine optimale Integration in die HTTP-Welt. So erreicht etwa der von einem Browser gesendete Request Symfony2 über den sogenannten Frontcontroller. Dieser besteht im Kern aus der Instanzierung eines Request-Objekts, welches an einen Kernel übergeben wird. Letzterer generiert aus dem Request eine Response und gibt diese in der Folge wieder an den Frontcontroller zurück.

Der Kernel durchläuft dabei vor und nach dem Aufrufen des Controllers eine Reihe von Standard-Events, welche als definierte Extensionpoints dienen. Die Response wiederum wird im Fontcontroller durch die „send()“-Methode ausgegeben und landet schließlich beim Browser. Ab Version 2.1 unterstützt Symfony hier zusätzlich optionales Response-Streaming.

Caching inklusive

Richtig spannend ist, dass man den Standard-Kernel durch einen Wrapper an HTTP-Caches übergeben kann. Falls Symfony2 dann erkennt, dass es sich hinter einem ESI-fähigen Reverse Proxy befindet, werden automatisch entsprechende Funktionen genutzt. So kann selbst eine stark dynamische Webseite zu großen Teilen zwischengespeichert werden.

Diese Arbeit verrichtet dann aber nicht der Webserver, sondern ein hoch optimierter Reverse Proxy, wie etwa Varnish. Das Seiten-Caching wird in Symfony2 also nicht neu erfunden, sondern es werden die Caching-Funktionen von HTTP wiederverwendet. Ach, und alle, die kein Varnish installieren können, bekommen mit Symfony2 einen in PHP implementierten Reverse Proxy gleich mitgeliefert.

Frontcontroller in Symfony2
<?php
require __DIR__.'/../app/autoload.php';
require __DIR__.'/../app/AppKernel.php';
//require __DIR__.'/../app/AppCache.php';
use Symfony\Component\HttpFoundation\Request;
$kernel = new AppKernel('prod', false);
//$kernel = new AppCache($kernel);
$request = Request::createFromGlobals();
$response = $kernel->handle($request);
$response->send();
$kernel->terminate($request, $response);

Listing 1

Wieder wird NIH durch das Konzept „Standing on the Shoulders of Giants“ ersetzt. Ein Weg, der in der Vergangenheit und der auch in Zukunft überzeugen wird.

Wer sich selbst überzeugen möchte, ist auf diesem Weg herzlich dazu eingeladen. Und wer sich überzeugt hat, der möge doch Fabien Potencier eine Postkarte schicken. Als Dank gibt es dafür dann ein Badge (http://t3n.me/SymfonyBadge).

Der Autor

Lukas Kahwe Smith arbeitet für die Liip AG in Zurich. Er ist seit über 10 Jahren in der PHP-Community aktiv und war unter anderem als Co-Release-Manager für PHP 5.3 tätig. Bei Symfony2 ist er von Beginn an dabei und arbeitet auch an einer Vielzahl von Bundles. Er gehört zudem zum Symfony2-CMF-Team und den Definierern des PHPCR-Standards sowie dessen Referenz-Implementierung Jackalope. Auch im Doctrine-Projekt hat er an einigen Stellen seine Finger im Spiel.

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

2 Kommentare
Heinz Inge
Heinz Inge

Beide leiden unter demselben Problem, Vermüllung und unglaubliche Langsamkeit.
Grade Flow3 kann ich leider nicht ernst nehmen weil es von denselben Leuten geschrieben wurde die es über viele Jahre nicht geschafft haben Typo3 benutzbar zu machen. (Und nein, nur weil viele T3 im Einsatz haben heisst es nicht das es auch benutzbar ist, es garantiert nur gute Einnahmen weil man Schulungen und teure Anpassungen verkaufen kann)

Diese „Überstandardisierung“ ekelt mich an. Man verbringt mittlerweile mehr Zeit damit Standards umzusetzen, Tests zu schreiben und das Caching zu verfeinern als die eigentliche Aufgabe zu erfüllen.

99% der Webprojekte würden diesen Aufwand niemals rechtfertigen und sind schlicht „Overengineered“.

Ich habe dabei nichts gegen Frameworks an sich, aber sobald sie mehr Arbeit machen als sie Probleme lösen bzw ohne massives Caching gar nicht benutzbar sind verursachen sie ohne Zwang unnötige Kosten.

Ich halte es lieber Frei nach dem Motto: „Frickelst du noch oder verdienst du schon?“

Antworten
Martin
Martin

FLOW3 würde ich als ewigen Newcomer auch nicht gerade als „Gigant“ bezeichnen…

Antworten

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