TYPO3 5.0 - Der aktuelle Stand der Zukunft

  • View
    10.348

  • Download
    8

Embed Size (px)

DESCRIPTION

 

Transcript

TYPO3 5.0 der aktuelle Stand der Zukunft Jochen Rau Mit Beitrgen von Robert Lemke und Sebastian Kurfrst Hohenheim, 15. Mai 2009 Wer ist das? Dipl.-Ing. Maschinenbau (Universitt Stuttgart) Erstinfektion mit TYPO3 im Jahr 2001 (danach 5 Jahre lang immun) lebe und arbeite heute in Tbingen zu 60% selbstndiger TYPO3-Entwickler zu 60% Familienvater Projektleiter fr Extbase, dem neuen Framework fr Extensions ab TYPO3 v4.3 zuvor 5 Jahre wissenschaftlicher Mitarbeiter bei der Fraunhofer-Gesellschaft und dem Deutschen Zentrum fr Luft- und Raumfahrt 5 Jahre Oberstufenlehrer fr Mathematik, Physik und Informatik TYPO3 heute erste Verentlichung 1998 33 Kernentwickler bisher 500.000 Zeilen Code committed aktuelle Codebase: 300.000 Zeilen aktuelle stabile Version: TYPO3 4.2.6 60.000 bis 80.000 Downloads pro Monat mehr als 30.000 Nutzer auf typo3.org registriert hchste Verbreitung im Mittelstand, jedoch auch Nutzung in groen Firmen und Organisationen: Dassault Systems, 3M, Sixt, Unesco, Unicef, WWF TYPO3 heute TYPO3 v4 ist nahezu vollstndig ausgereift letzte Releases: Fokus auf Usability-Verbesserungen fr Benutzer gewachsene Architektur kaum Unit-Tests inkonsistente API keine durchgehend objektorientierte Programmierung groe nderungen sind risikoreich bis unmglich keine klare Trennung zwischen Applikations-Framework und Content-Management-System Warum TYPO3 v5.0? Komplexitt Die Architektur des TYPO3 Core hat sein Limit erreich und bentigt viel Einarbeitungszeit Datenmodell Der derzeitige Ansatz ist nicht exibel genug und bereitet bei direktem Datenbankzugri Probleme (auch mit DBAL) PHP5 Die neuen Mglichkeiten von PHP5.3 erlauben eine viel sauberere Architektur Schnittstellen Eine neue Architektur ermglicht eine bessere Zusammenarbeit mit externen Diensten (SOAP, WebDAV, 3rd party tools) Warum TYPO3 v5.0? Auf mittlere Sicht werden an die 5.000 Extensions fr TYPO3 4.x verfgbar sein - in sehr unterschiedlicher Qualitt TYPO3 wird verstrkt in sicherheitskritischen Bereichen groer und mittlerer Unternehmen eingesetzt Die Entwicklung fr TYPO3 wird mehr und mehr professionalisiert (grere Teams mit mehr Aufgabenteilung) Neue CMS auf dem Markt knnen neue Technologien ohne Rcksicht auf bestehenden Code nutzen quot;Wir brauchen ein neues Framework!quot; http://www.sxc.hu/photo/585791 Die TYPO3-Familie Vergleich mit bestehenden Frameworks Vergleich mit bestehenden Frameworks TYPO3 v5.0 Was bleibt? Es wird ein Back-End geben TypoScript wird in einer neuen objektorientierten Version 2.0 verentlicht Die Seitenbaum-Metapher bleibt erhalten Was kommt Klare Trennung von Zustndigkeiten durch entkoppelte Schichten Wiederverwendbare Komponenten Die Speicherung des Contents wird transparent fr das CMS Vollstndige Abstraktion von einer Speicherlsung Security wird zentralisiert Layered Architecture http://www.sxc.hu/photo/585791 Layered Architecture View Presentation Controller Application Logic (Service Layer) Domain Domain Model (Domain Layer) Data Mapper (part of Content Repository) Data source Data Source Abstraction Domain Driven Design Domain-Driven Design Domne = Aktivitt oder Geschft des Benutzers Fokus auf die Domne, und die Logik der Domne genaue Abbildung der Sprache und der Regeln innerhalb der Domnen auf Software universelle Sprache (ubiquitous language) zwischen den Projektmitgliedern die selben Wrter fr Diskussion, Modellierung, Entwicklung und Dokumentation Domain-Model des Blog Example Aggregate Aggregate Root Blog Post Comment Tag Domain-Model des Blog Example Domain-Model des Blog Example Model-View-Controller Pattern 1 2 BlogExample Request Dispatcher TYPO3 HTML Response Controller 6 3 assign(Blog) 5 render() findByName('MyBlog') Blog Response 4 View Repository Domain Model Blog Post Comment Tag Transparente Persistenz Ein Persistence-Manager verwaltet alle Objekte Transparent fr den Programmierer Alle Domain-Aggregates, die durch ein Repository verwaltet werden, werden automatisch persistiert nderungen an den Daten eines Objektes werden ebenfalls automatisch persistiert Security Security Authorization Authentication Validation, Filtering Application Firewall How to protect? Es soll alles geschtzt werden knnen Das Grundlegendste, was geschtzt werden kann sind (PHP-)Funktionen und Methoden Jemand muss entscheiden, ob eine Methode im aktuellen Kontext aufgerufen werden darf Jeder Methodenaufruf wird per AOP abgefangen ohne das dies im original Code sichtbar ist (touchless) Zentralisierte Sicherheit: Rollen und Priviliegien werden in Access Control Lists (ACLs) deniert The security election voting for access Die Entscheidung ber den Zugri liegt bei sog. Access Decision Voters Zugri wird nur gewhrt, falls mindestens ein grant vote und kein deny vote vorliegt Eigene Voter knnen implementiert werden Ein Voter kann sich der Stimme enthalten, falls er nicht fr die aktuelle Methode zustndig ist Argument-Validierung Alle Argumente, die an den Action-Controller bergeben werden, werden automatisch validiert White-Lists: Nur registrierte Argumente sind verfgbar Der Zugri auf die $_GET- und $_POST-Variablen wird abgefangen Argument-Validierung FLOW3 wird mit einer stattlichen Anzahl von Validatoren ausgeliefert: AlphaNumeric, EmailAddress, Float, Integer, NotEmpty, Number, NumberRange, RegularExpression, UUID, Text Eigene Validatoren knnen einfach erstellt werden Validatoren knnen verkettet und verschachtelt werden Denition der Validierungsregeln Alle Validierungsregeln werden an Ort und Stelle durch Kommentare festgelegt Zustzliche Regeln knnen aufgenommen werden class Blog { /** * The blog's name. Also acts as the identifyer. * * @var string * @validate Alphanumeric, Length(minimum = 3, maximum = 50) * @identity */ protected $name = ''; /** * A short description of the blog * * @var string * @validate Text, Length(maximum = 150) */ protected $description = ''; Denition der Validierungsregeln /** * Create action for this controller. * * @param string $author * @param string $emailAddress * @param F3BlogDomainModelBlog $blog * @return string The rendered view * @validate $emailAddress EmailAddress */ public function createAction($author, $emailAddress, F3BlogDomainModelBlog $blog) { [...] } Application Firewall Die erste Verteidigungslinie Blockiert Bad-Requests so frh wie mglich Innerhalb der Firewall kann ein Request anhand von Mustern klassiziert werden (z.B. URL, IP address/range, ...) Falls ein Muster passt wird der zugehrige Interceptor aufgerufen (deny access, grant access, authentication required, ...) Falls kein Muster passt wird der Request standardmig abgewiesen Managed Objects Managed Objects Der Lebenszyklus eines Objekts und das Zusammenspiel der akt