Web-Framework
Aus 4webmaster.de
Ein Framework ist ein Programmiergerüst, das dem Programmierer einen Rahmen zur Erstellung von Anwendungen zur Verfügung stellt. Dieser Rahmen umfasst spezifische Fähigkeiten (bei Web-Frameworks z.B. objektorientierter Datenbankzugriff, Templatesysteme für Webseiten, E-Mail-Schnittstellen, RSS-Integration, etc.), aber auch die im Framework verwendeten Entwurfsmuster, welche die Architektur der individuellen Anwendung bestimmen. Beispielsweise basieren die meisten Web-Frameworks auf dem Model-View-Controller-Muster. Ein Framework definiert insbesondere auch den Kontrollfluss der Anwendung und die Schnittstellen für die konkreten Klassen, die vom Programmierer erstellt und registriert werden müssen.
Dabei findet eine Umkehrung der Steuerung (Inversion of Control) statt: Der Programmierer registriert konkrete Implementierungen, die dann durch das Framework gesteuert und benutzt werden, statt – wie bei einer Klassenbibliothek – lediglich Klassen und Funktionen zu benutzen. Wird das Registrieren der konkreten Klassen nicht fest im Programmcode verankert, sondern wird „von außen“ konfiguriert, so spricht man auch von Dependency Injection.
Push oder Pull
Die meisten MVC-Frameworks sind push-basiert. In push-basierten Frameworks sorgen Controller-Actions für die Verarbeitung der Daten und pushen diese dann zum Rendern zur View-Schicht. Diese Architektur wird auch "request-driven" genannt. Pull-basierte Frameworks dageben beginnen mit der View-Ebene. Der View pullt sich dann benötigte Daten von allen benötigten Controllern. D.h. mehrere Controller werden mit einem einzigen View angesprochen. Diese Architektur wird auch "component-based" genannt.
Charakterisierung wichtiger Web-Frameworks
| Framework | Relevanz 2008 | Basissprache | Architektur | DB-Zugriff (ORM) | Beschreibung |
|---|---|---|---|---|---|
| Apache Struts | 28 | Java | MVC-Push | z.B. Hibernate | Schwergewichtiges Java-Framework. |
| Java Server Faces | 13 | Java | MVC-Pull | ||
| JBoss Seam | 5 | Java | MVC-Pull | JPA, Hibernate | |
| Spring MVC | Java | MVC-Push | z.B. Hibernate, iBATIS | Leichtgewichtiger als Struts. | |
| Google Web Toolkit | 13 | Java | |||
| Zope | 20 | Python | MVC-Pull | ZODB, SQLAlchemy, SQLObject | Ein ORM ist bei Zope nicht notwendig, da mit ZODB ein natives OODBMS vorliegt. Plone basiert auf Zope. |
| Zend Framework | 14 | PHP | MVC-Push | ||
| DotNetNuke | 5 | ASP.NET | ohne MVC | NHibernate | |
| Ruby on Rails | 35 | Ruby | MVC-Push | ActiveRecord | |
| Django | 6 | Python | MVC-Push | Django ORM, SQLAlchemy | Rails-Philosophie. Im Gegensatz zu Rails setzt Django aber nicht auf eine implizite, sondern auf die explizite Konfiguration einer Anwendung. Dies schlägt sich beispielsweise in der URL-Konfiguration nieder, welche mittels regulärer Ausdrücke explizit vorgenommen wird und so eine Abbildung einer URL auf eine Python-Funktion schafft. Automatisch generierte, produktionstaugliche Administrationsoberfläche. |
| Grails | 9 | Groovy / Java | MVC-Push | GORM, Hibernate | Rails-Philosophie, mit einfacherer Internationalisierung als Rails. Grails baut auf mehreren etablierten Frameworks wie Spring, Hibernate und SiteMesh auf und verbindet diese mit der Skriptsprache Groovy. Es können ohne Java (die Sprache) Applikationen erstellt werden, welche auf der JVM lauffähig sind. Eine in Grails erstellte Webanwendung lässt sich als Web Archive (WAR-Datei) exportieren und kann so auf jedem Servlet-Container wie zum Beispiel dem Apache Tomcat installiert werden. |
| Symfony | 14 | PHP | MVC-Push | Propel, Doctrine | Rails-Philosophie. Symfony wird seit 2005 entwickelt. Es entstand parallel zur steigenden Popularität von Ruby on Rails und dem Wunsch nach einem ähnlichen MVC-Framework auf PHP-Basis. |
| CakePHP | 6 | PHP | MVC-Push | (Active record pattern) | Rails-Philosophie. Im Vergleich zu anderen Web-Frameworks stellt CakePHP geringe Anforderungen an den Webserver. Es unterstützt PHP5 und das immer noch verbreitete PHP4. |
CMS, Wiki, Blog
| System | Typ | Relevanz 2008 | basiert auf |
|---|---|---|---|
| TYPO3 | CMS | 47 | PHP, MySQL |
| Joomla! | CMS | 38 | PHP, MySQL |
| Drupal | CMS | 27 | PHP, MySQL oder Postgres |
| Plone | CMS | 15 | Python / Zope, Zope-eigene objektorientierte DB |
| MediaWiki | Wiki | 11 | PHP, MySQL |
| TWiki | Wiki | 5 | Perl, Textdateien statt DB |
| Wordpress | Blog | 30 | PHP, MySQL |
| Movable Type | Blog | 1 | Perl, beliebige DB |
Vergleiche
- Web application frameworks: Comparison of features (Wikipedia)
- CMS Matrix Vergleich verschiedener CMS-Systeme
- WikiMatrix Vergleich verschiedener Wiki-Systeme
- WeblogMatrix Vergleich verschiedener Weblog-Systeme
Dieser Artikel basiert auf dem Artikel Framework aus der freien Enzyklopädie Wikipedia. Er steht unter der GNU-Lizenz für freie Dokumentation. In diesem Wiki und / oder der Wikipedia ist eine Liste der Autoren verfügbar.
Dieser Artikel basiert auf dem Artikel Web_application_framework aus der freien Enzyklopädie Wikipedia. Er steht unter der GNU-Lizenz für freie Dokumentation. In diesem Wiki und / oder der Wikipedia ist eine Liste der Autoren verfügbar.
Dieser Artikel basiert auf dem Artikel Comparison of web application frameworks aus der freien Enzyklopädie Wikipedia. Er steht unter der GNU-Lizenz für freie Dokumentation. In diesem Wiki und / oder der Wikipedia ist eine of web application frameworks&action=history Liste der Autoren verfügbar.
Dieser Artikel basiert auf dem Artikel Django aus der freien Enzyklopädie Wikipedia. Er steht unter der GNU-Lizenz für freie Dokumentation. In diesem Wiki und / oder der Wikipedia ist eine Liste der Autoren verfügbar.
Dieser Artikel basiert auf dem Artikel Grails aus der freien Enzyklopädie Wikipedia. Er steht unter der GNU-Lizenz für freie Dokumentation. In diesem Wiki und / oder der Wikipedia ist eine Liste der Autoren verfügbar.