Anzeige
Anzeige
Software & Entwicklung
Artikel merken

Sicherheit, Routing, Persistenz – es geht voran!: TYPO3 5.0

In den letzten Monaten ist FLOW3 immer bekannter geworden – nicht zuletzt durch die Präsenz der Entwickler auf Konferenzen und Veranstaltungen. Dabei sind auch zahlreiche Fragen aufgetaucht: Fragen nach Routing, Persistenz und Sicherheit. An den passenden Antworten arbeiten die Entwickler derzeit auf Hochtouren, weshalb FLOW3 in diesen Bereichen in den vergangenen Wochen große Fortschritte gemacht hat.

6 Min. Lesezeit
Anzeige
Anzeige

Während der TYPO3 Developer Days 2008 in Elmshorn war Robert Lemkes Vortrag „Hitchhiker’s Guide to FLOW3“ (Folien [1] und Podcast [2] stehen zum Download bereit) zur Freude der Entwickler gut besucht und auch während der übrigen Zeit spürte das FLOW3-Team ein wachsendes Interesse am neuen Framework.

Anzeige
Anzeige

Nach den TYPO3 Developer Days trug Robert Lemke den Namen FLOW3 und seinen TYPO3-Rucksack weiter nach Karlsruhe zur „Dynamic Languages World“ [3], einer Konferenz rund um dynamische Sprachen wie PHP, Ruby und Python. Dort hielt er einen Vortrag zu „Aspect-Oriented Programming and Dependency Injection“ und zeigte, dass so etwas dank FLOW3 auch in PHP möglich ist. Zur Freude der FLOW3-Entwickler kannten bereits mehr als die Hälfte der etwa 50 Zuhörer das neue Framework.

Anfang Juli begaben sich die FLOW3-Entwickler dann auf die vorerst letzte Reise, diesmal nach Annecy in Frankreich, zur TYPO3-Sommerakademie [4]. Eine ganze Woche lang TYPO3-Vorträge und -Workshops mit steigendem Schwierigkeitsgrad von Anfänger-Themen bis hin zu Details der Entwicklung. Am letzten Tag hielten Robert Lemke und der Autor Vorträge zu FLOW3, Test-Driven-Development und Domain-Driven-Design – und bekamen wieder großartiges Feedback.

Anzeige
Anzeige

Die Präsenz auf Veranstaltungen in den letzten Monaten trägt bereits Früchte. So war FLOW3 bereits Titelthema in PHP-Fachzeitschriften und das Interesse wächst stetig – beste Voraussetzungen für eine weite Verbreitung des Frameworks, was letztendlich auch TYPO3 5.0 weiterhilft.

Anzeige
Anzeige

Die Lücke zwischen 4 und 5

Ein Problem, das während der TYPO3 Developer Days zur Sprache kam, ist die Lücke zwischen den TYPO3-Versionen 4 und 5. Nicht nur die technologische Lücke, sondern auch die personelle. Robert Lemke und der Autor konzentrieren sich sehr auf die Entwicklung von FLOW3 und TYPO3 5.0, während das TYPO3-4.x-Core-Team seine Energie in die Pflege und Entwicklung der aktuellen Version investiert.

Dies ist verständlich und derzeit sicher sinnvoll, langfristig kann eine Pflege beider Versionen in der gewünschten Qualität jedoch kaum funktionieren. Um hier Wege der Zusammenarbeit und mögliche Migrationspfade zu finden, wird derzeit ein Treffen beider Kernteams im Anschluss an die TYPO3-Konferenz 2008 in Berlin geplant – getreu dem Motto „Gemeinsam sind wir stärker“.

Anzeige
Anzeige

Dass die Lücke zwischen Version 4 und 5 kleiner werden muss, dachte sich auch Jochen Rau und begann mit der Entwicklung der Extension „gimmefive“ [5]. Mittlerweile hat er sich von der Idee einer Rückportierung der wichtigsten FLOW3-Komponenten verabschiedet und entwickelt stattdessen eine Brücke zwischen TYPO3 4.x und FLOW3, so dass FLOW3-Applikationen möglichst nahtlos integriert werden können. Die Extension kann bereits genutzt werden und ermöglicht die Nutzung von FLOW3-Packages als Extension. Weitere Informationen finden sich im Projekt-Wiki auf Forge.

Das Package Repository – FLOW3 in der Praxis

Im Juni waren Thomas Hempel, Christopher Hlubek und Tobias Liebig bei den FLOW3-Entwicklern in Lübeck zu einem Kickoff-Meeting für das erste Scrum-basierte, agile Forge-Projekt: Das FLOW3 Package Repository alias F3PR. Während des Treffens definierte die Gruppe die wichtigsten Rollen und Funktionen, um anschließend User Stories dafür zu schreiben. Weitere Informationen zum Projekt [6] und zur Vorgehensweise finden sich in Forge.

Da Robert Lemke und der Autor in diesem Projekt die Kunden darstellen, haben sie in Fragen der technischen Umsetzung nichts zu melden – dennoch sieht es nach dem Treffen so aus, dass das F3PR-Team viele Teile auf Basis von FLOW3 umsetzen wird. Damit ist das F3PR-Projekt das erste „echte“ Projekt auf Basis von FLOW3.

Anzeige
Anzeige

Eine schnelle Route

Ohne ein so genanntes Routing zur Umsetzung der aufgerufenen URL in Package, Controller, Action und weitere Parameter kann man heute im Bereich MVC keinen Blumentopf mehr gewinnen.

Bastian Waidelich, ein weiterer Kopf im wachsenden TYPO3-5.0-Team, hat diesen Teil zu FLOW3 beigetragen. Nach ausgiebiger Recherche und lebhafter Diskussion in den v5-Mailinglisten stand ein flexibles und zugleich einfaches Konfigurationsformat fest, das RealURL deutlich überlegen ist. Anders als bei RealURL werden keine postVarSets angegeben, sondern konkrete Pattern. Diese „Named Patterns“ ermöglichen die Wiederverwendung definierter Regeln. Die Default-Route sieht so aus:

Default-Route von FLOW3
$c->routes->default
	->setUrlPattern('[package]/[controller]/[action]')
	->setDefaults(
		array(
			'package'=>'Default',
			'controller'=>'Default',
			'action'=>'Default',
		)
	);

Listing 1

Mittlerweile ist auch die Implementierung zu großen Teilen fertig und bereits im Subversion-Repository zu finden [7]. Mit dem Routing nähert sich FLOW3 einem Entwicklungsstand, der ein erstes Release in nicht all zu ferner Zukunft denkbar macht. Genau der richtige Zeitpunkt also, um auch mal wieder an das Thema Geschwindigkeit zu denken. Bisher ist das leider keine Kernkompetenz von FLOW3 – aber es gibt Hoffnung.

Anzeige
Anzeige

So konnte Robert Lemke in einer intensiven Profiling-Session wenig überraschend feststellen, dass die intensive Nutzung von Reflection im AOP-Framework ausgiebig Resourcen frisst. Es folgte ein intensives Refactoring und die Implementierung eines ReflectionService, der Reflection-Informationen cached. FLOW3 wurde so rund acht mal schneller – nicht schlecht für den Anfang.

Kann es denn schon speichern?

Persistenz ist eine der wichtigsten Funktionen für ein Framework, das als Basis für ein CMS dienen soll. FLOW3 soll Domain-Objekte so transparent wie möglich speichern: ein „Customer“-Objekt zu erzeugen und zum „Customer Repository“ hinzuzufügen soll ausreichen. Keine Datenbank, keine save-Methode – alles automatisch. Das von den FLOW3-Entwicklern gewählte Konzept orientiert sich stark am Domain-Driven-Design und bietet Support für die entsprechenden Konzepte von Repositorys und Aggregates. Hier ein Überblick über die wichtigsten Fakten:

  • Das Klassen-Schema wird automatisch aus dem Quelltext erzeugt – es muss keine zusätzliche XML-Datei geschrieben werden.
  • Eigenschaften-Typen und Informationen zum Model (Repository, Entity, Value Object) werden als Annotations in der Quelltext-Dokumentation angegeben.
  • Das TYPO3 Content Repository ist das Standard-Backend für die Persistenzschicht.
  • Bestehende relationale Datenbanken können transparent in das Content Repository eingebunden werden. Über eine sorgfältig ausgearbeitete Konfigurations-Syntax kann dieser virtuelle Teilbaum dann von der Persistenzschicht genutzt werden.

Momentan ist die Persistenzschicht nicht vollständig umgesetzt, das Speichern neuer Objekte im Content Repository sowie das wiedererwecken von Objekten aus einer statischen Abbildung ihrer „inneren Werte“ funktionieren jedoch schon. Mit Erscheinen dieser Ausgabe sollte der Kreis geschlossen sein.

Anzeige
Anzeige

Sicherheitsaspekte

Das Security-Framework von FLOW3 ist derzeit zu großen Teilen noch ein Konzept, aber zumindest die Interfaces sind bereits in Subversion eingecheckt [8]. Andreas Förthner hat alle Security-Frameworks dieser Galaxis betrachtet und ganz im Stile von FLOW3 nur die guten Eigenschaften übernommen.

Das Framework wird die AOP-Funktionen von FLOW3 nutzen, um die Sicherheitsregeln in den Code einzubinden und ermöglicht so „Touchless Security“, also keine Zugriffs-Checks im Applikationscode, diese werden je nach Konfiguration automatisch eingefügt. Andreas Förthner wird dies bei der TYPO3-Konferenz im Rahmen eines Vortrags zeigen. Weitere Bestandteile des Konzepts sind Access Control Lists und ein Authentifizierungssystem, die eine weit flexiblere Handhabung von Sicherheitsanforderungen ermöglichen als es bisher mit TYPO3 möglich ist.

Bei der Implementierung des Konzepts wird das FLOW3-Team weiterhin testgetrieben vorgehen, allerdings mit noch mehr Umsicht, um an dieser wichtigen Stelle höchstmögliche Qualität zu erreichen. Ein wichtiges Hilfsmittel hierzu ist das Arbeiten in der Vertikalen: nicht Schicht für Schicht, sondern ein Feature „von oben bis unten“ implementieren.

Anzeige
Anzeige

Mr. Hudson passt auf

Je komplexer der Code wird, den ein wachsendes Team entwickelt, desto wichtiger ist es, die Stabilität der Codebasis sicherzustellen. Eine Methode hierzu ist Continuous Integration.

Mittlerweile haben die FLOW3-Entwickler in ihrem Büro eine Hudson-Instanz aufgesetzt [9], die regelmäßig die Änderungen im Subversion-Repository auscheckt und den PHP-Code auf Syntaxfehler prüft, alle Unit-Tests laufen lässt und die API-Dokumentation rendert. Tritt ein Fehler auf, werden die Entwickler per E-Mail und Jabber benachrichtigt – so bleiben Fehler maximal fünf Minuten unentdeckt.

Dies führt schon zu einem erstaunlichen Zuwachs an Stabilität, da die drohende „Enttarnung“ als Code-Wüstling jeden Entwickler zu mehr Sorgfalt motiviert. Ein besonderes Gimmick ist jedoch das „CI-Game“, bei dem für neue Tests und Verbesserungen am Code Punkte gutgeschrieben, für verursachte Fehler hingegen Punkte abgezogen werden. So wird der ewige Wettstreit der Entwickler von „wer kann coolere Features coden“ in einen Kampf um den saubersten Code verwandelt.

Anzeige
Anzeige

Bis zum Herbst ist die Anbindung eines CI-Servers an Forge geplant. Man darf gespannt sein, welche Wirkung dies auf die Entwicklung aller dort aktiven Projekte haben wird.

Mehr zu diesem Thema
Fast fertig!

Bitte klicke auf den Link in der Bestätigungsmail, um deine Anmeldung abzuschließen.

Du willst noch weitere Infos zum Newsletter? Jetzt mehr erfahren

Anzeige
Anzeige
Schreib den ersten Kommentar!
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

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

Bitte schalte deinen Adblocker für t3n.de aus!
Hallo und herzlich willkommen bei t3n!

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

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

Schon jetzt und im Namen der gesamten t3n-Crew: vielen Dank für deine Unterstützung! 🙌

Deine t3n-Crew

Anleitung zur Deaktivierung
Artikel merken

Bitte melde dich an, um diesen Artikel in deiner persönlichen Merkliste auf t3n zu speichern.

Jetzt registrieren und merken

Du hast schon einen t3n-Account? Hier anmelden

oder
Auf Mastodon teilen

Gib die URL deiner Mastodon-Instanz ein, um den Artikel zu teilen.

Anzeige
Anzeige