Oft ist es nicht im Vorhinein klar, ob für ein Projekt ein Content-Management-System (CMS) wie Drupal benötigt wird, oder ob ein Framework wie Laravel ausreicht. Firmenintern stehen wir auch oft vor dieser Entscheidung. Doch was sind die wichtigsten Unterschiede und anhand welcher Kriterien entscheiden wir, was wir für welches Projekt verwenden?
Unterschiede zwischen Framework und CMS
Ein Framework ist meist nur eine Sammlung von Code-Bibliotheken, die es Entwicklern ermöglicht, schneller und sicherer Ergebnisse zu liefern. Außerdem geben Sie meist die Struktur vor, wie z. B. das Model-View-Controller (MVC) Pattern. Vor allem in der Web-Entwicklung gibt es viele sicherheitskritische Funktionalitäten, die man ohne Frameworks jedes Mal neu erfinden müsste, wie zum Beispiel einfachen und sicheren Datenbankzugriff.
Beispiele bekannter Frameworks: Laravel (PHP), Symfony (PHP), Bootstrap (CSS), React (JavaScript), ...
Ein CMS hingegen ist viel mehr als ein Framework und baut oft auf einem auf. Sie sind auch für Laien leicht aufzusetzen. Innerhalb von Minuten kommt man zu seiner ersten Website. Auch die Unterstützung für User-Management, Berechtigungen, Bilder und andere Medien ist meist direkt nach der Installation verfügbar.
Beispiele bekannter CMS: WordPress, Drupal, Typo3, Joomla!, Contao
Wann verwendet man ein Framework?
Es gibt grundsätzlich zwei Formen von Frameworks:
- Backend-Frameworks laufen auf einem Server und verwalten u. a. den Zugriff auf die Datenbank sowie die Authentifizierung von Nutzern. Sie liefern auch HTML und andere Dateien aus, die vom Browser angefragt werden. Oft werden diese erst auf Anfrage generiert.
- Frontend-Frameworks nutzen meist JavaScript und/oder CSS.
- CSS-Frameworks bieten Designvorlagen für viele oft benötigte Elemente. Das bekannteste Beispiel ist Bootstrap.
- JavaScript-Frameworks wie React oder Vue.js ermöglichen es, sogenannte Single-Page-Webanwendungen zu entwickeln. Die Frameworks erhalten vom Server nur Daten, welche sie ohne neu laden zu müssen direkt anzeigen.
Manche Backend-Frameworks übernehmen auch Teile vom Frontend, indem sie Template-Engines wie Twig oder Blade nutzen. Natürlich können zusätzlich auch Frontend-Frameworks eingebunden werden.
Für viele Anwendungsfälle ist es eindeutig, ob man ein Framework benötigt. Möchte man beispielsweise eine Single-Page-Webanwendung entwickeln, die sehr individuelle Anforderungen hat und hochskalierbar sein soll, kommt man um React oder Vue.js in Kombination mit einem Backend-Framework nicht vorbei.
Wann verwendet man ein CMS?
Es gibt grundsätzlich zwei Formen von CMS:
- Gehostete CMS oder Software-as-a-Service (SaaS) CMS wie Shopify, Squarespace oder Wix laufen auf dem Server der vertreibenden Firma. Somit muss sich der Kunde nicht um Updates und Sicherheit kümmern. Nachteil ist die fehlende Flexibilität und die oft hohen monatlichen Kosten.
- Open-Source CMS wie Wordpress, Drupal oder Typo3 nutzen meist PHP und laufen daher auch auf sehr günstigen Shared-Hosting Servern. Die CMS Software muss man jedoch selbst updaten, was eine gewisse technische Affinität voraussetzt. Dafür sind sie oft flexibel und erweiterbar.
Für häufige Anwendungsfälle gibt es meist mehrere CMS, die sich als Lösung für das Problem anbieten. Folgende Standardlösungen lassen sich in fast jedem größeren CMS mit Erweiterungen umsetzen.
- Blogs meist ohne weitere Konfiguration
- Online-Shops mit Shopify, Magento, Wordpress (mit WooCommerce) oder Drupal (mit Drupal Commerce)
- einfache Webseiten
- Foren
- Mehrsprachigkeit
- Search Engine Optimization (SEO)
Vergleich und Ähnlichkeiten
Für viele Entwickler scheint der Vergleich eines CMS mit einem Framework auf den ersten Blick wie ein Vergleich zwischen Äpfeln und Birnen. Das trifft sicher für typische CMS bzw. Frameworks wie Wordpress und React zu. Jedoch sind sich vor allem Laravel und Drupal in einigen Aspekten ähnlich. Mit Orchid Platform lässt sich mit Laravel beispielsweise schnell ein CMS aufsetzen, während Drupal eine Flexibilität bietet, die man von CMS sonst nicht kennt und sich dadurch spezielle Anforderungen einfach umsetzen lassen.
Daher nehmen wir für den folgenden Vergleich für CMS stellvertretend Drupal und als Frameworks stellvertretend Laravel. Diese bieten beide große Flexibilität, weswegen viele Projekte sowohl mit Drupal als auch mit Laravel umsetzbar sind.
Drupal | Laravel | |
---|---|---|
Erschienen | 2000 | 2011 |
Sprachen | PHP, HTML/CSS, JavaScript, Twig | PHP, HTML/CSS, JavaScript, Blade |
wichtigste Merkmale | sicherstes CMS, flexibel, robust | einfach zu verstehen, vielseitig, modern |
Laravel als PHP Framework
Laravel ist ein seit Jahren ein beliebtes und robustes Open-Source PHP-Framework, das dem MVC Muster folgt und vergleichsweise einfach zu erlernen ist. Es wurde 2011 von Taylor Otwell erstmals veröffentlicht.
Symfony ist bekannteste Alternative
Laravel ist seitdem die beliebteste Alternative zum PHP-Framework Symfony, das bereits seit 2005 verfügbar ist. Im Vergleich zu Symfony ist es mit Laravel einfacher, schnell die Konzepte zu verstehen und einen funktionierenden Prototypen zu entwickeln. Dafür ist Symfony noch um einiges robuster und daher auch für sehr große Projekte geeignet. Für sehr große Projekte nutzen wir aber meist direkt Drupal, welches sogar auf Symfony basiert. Deshalb haben wir das Framework nicht in den Vergleich mitaufgenommen.
Die Vorteile von Laravel
Das Hauptaugenmerk liegt bei Laravel auf der simplen Grundstruktur, mit der auch komplexe Systeme entwickelt werden können. Weitere Stärken von Laravel haben wir für Sie zusammengefasst.
- sicher und robust
- regelmäßige Updates
- nutzt Objektorientierte Programmierung (OOP)
- einfach zu verstehen, perfekt für den Einstieg in Frameworks
- nutzt native PHP-Features wie Traits
- flexibel: man kann ein CMS oder einen Webservice entwickeln
- große Entwickler-Community
- großartige kostenlose Videotutorials
- viele PHP-Softwarepakete, die auf Laravel aufbauen wie Forge, Lumen, Cashier, Orchid, Nova und Spark
- einfach zu verstehendes Object-Relational Mapping (ORM, die Verbindung zwischen Klassen und gespeicherten Objekten in der Datenbank)
- es ist einfach, Designs umzusetzen
Laut dem StackOverflow Developer Survey 2021 ist Laravel das beliebteste PHP-Framework.
Die Nachteile von Laravel
Bei der Entwicklung von Laravel wird wenig Rücksicht auf Legacy-Code und Rückwärtskompatibilität genommen. Dafür können schnell die neuesten Trends in der Webentwicklung eingebunden werden.
Für sehr robuste und langlebige Systeme kann das jedoch auch ein Nachteil sein. Sicherheitsupdates sind natürlich auch für diese Systeme wichtig, jedoch wird regelmäßig auch nicht-sicherheitsrelevanter Code in neuen Laravel Versionen entfernt. Das führt dazu, dass diese oft auf alten, nicht mehr unterstützten Laravel Versionen laufen. Um auf die neueste Version upgraden zu können, muss nämlich die gesamte Codebasis nach veraltetem Code durchsucht werden, welcher entsprechend geändert und ausgiebig getestet werden muss.
Weitere Nachteile sind:
- noch nicht so lange genutzt wie andere Frameworks
- einfach zu lernen, aber schwer zu meistern
- Major Versionen werden nur 2-3 Jahre lang unterstützt
Drupal für Flexibilität und Sicherheit
Drupal ist das älteste der beliebten PHP Content-Management-Systeme. Es wurde bereits im Jahr 2000 erstmals veröffentlicht. Seit Drupal 8 basiert es auf dem modernen aber komplexeren PHP-Framework Symfony und hat damit die Entwicklung von Modulen deutlich vereinfacht.
Alternative CMS
Andere CMS, z. B. WordPress, Typo3 oder Joomla, haben wir in diesen Vergleich nicht mit aufgenommen. Ein Vergleich dieser typischen CMS mit Frameworks wäre nicht sinnvoll, da sie deutlich unterschiedliche Anwendungsfälle abdecken. Da jedoch kaum ein CMS so entwicklerfreundlich, mächtig und einfach erweiterbar wie Drupal ist, lassen sich damit auch leichter Web-Anwendungen entwickeln, die sonst mit einem Framework umgesetzt werden würden.
Die Vorteile von Drupal
Drupal gilt seit langem als flexibles und sicheres CMS. Seit Drupal 8 ist auch die Performance deutlich besser. Weitere Stärken von Drupal haben wir für Sie zusammengefasst.
- einfach zu installieren
- sehr große Community
- seit Drupal 8 regelmäßige Updates
- gilt als sicherstes CMS
- flexibel und erweiterbar
- selbst ohne zusätzliche Module mächtig (Entity-API, Ansichten, User-Management, Berechtigungen, Rollen, Inhalte erstellen usw.)
- viele mächtige Module wie Drupal Commerce, Paragraphs, Pathauto usw.
- skalierbar und geeignet für komplexe Web-Applikationen
Laut whatcms.org nutzen stark besuchte Websites häufiger Drupal.
Die Nachteile von Drupal
Mit Sicherheit und Flexibilität kommt leider auch oft Komplexität. Im Fall von Drupal spiegelt sich das sowohl im Admin-Bereich als auch in der Entwicklung wider.
- Major Versionen werden nur 2-3 Jahre lang unterstützt
- schwierig zu lernen für Entwickler und Inhaltsersteller
- Updates sind ohne technische Kenntnisse (noch) nicht möglich
- Standardtheme ist nicht schön (Drupal 10 ändert das)
- Frontend-Entwicklung ist umständlich
- viele Module sind nur für ältere Versionen (wie Drupal 7) erhältlich und nicht kompatibel
- bei kleinen Fehlern kann die gesamte Seite nicht erreichbar sein
Wann sollte man Laravel und wann Drupal nutzen?
Wann ein Framework wie Laravel besser ist
Besonders Fullstack PHP-Frameworks sind Allrounder für die Webentwicklung. Durch die vielen Laravel Erweiterungen beispielsweise kann man schnell sowohl einfache Microservices als auch komplexe Web-Applikationen bauen. Dadurch ergeben sich folgende Anwendungsfälle, in denen Laravel ein schnelleres und leichtgewichtigeres Endergebnis liefert:
- einfache Webservices (mit Lumen)
- wenn kein komplexes Content-Management und keine Übersetzung von Inhalten benötigt wird
- wenn auf Basis einer Datenbank mehrere Benutzeroberflächen (Web, App und andere) entwickelt werden sollen
- einfache und exakt auf die Anforderungen angepasste CMS
- das ist mit Orchid Platform oder Nova sehr einfach
- Beispiel: der Scenario Game Creator unseres ErasmusPLUS Projekts
Wann ein CMS wie Drupal besser ist
Content-Management-Systeme sind standardmäßig bereits mächtig. Drupal beispielsweise bringt viel typische Funktionalität von CMS mit sich, wie ein Blogsystem mit Artikeln, Menüs, Benutzer-Management mit Berechtigungen und Rollen usw. Daher ist es für folgende Anwendungsfälle geeignet:
- komplexe Webapplikationen, die sowohl Inhalte benötigen als auch spezielle Anforderungen haben (z. B. unsere Lernplattform LAKschool)
- E-Commerce Systeme, die spezielle Anforderungen an das Buchungssystem haben
- kleine und große Websites, die mehrere Sprachen unterstützen sollen
- Kleine Blogs und Informationsseiten mit integriertem Shop (z. B. unsere Informationsseite für das Abitur in Berlin und Brandenburg)
Eigenes Projekt umsetzen
Sie benötigen eine einfache Website oder eine komplexe Web-Applikation? Gerne beraten wir Sie und setzen diese für Sie um. Kontaktieren Sie uns per Mail an info@lakdev.de oder über unser Kontaktformular und wir entwickeln eine auf Ihre Bedürfnisse abgestimmte Lösung.