Comparaison entre l’utilisation d’un CMS et d’un framework Web : Playmobil ou Légo ?
Ces deux approches, sans être totalement opposées, procèdent de principes différents : instanciation pour les CMS et utilisation de briques « métier » (application Web) pour les frameworks.
Les CMS (Content Managment Systems) ou gestionnaires de contenus
Avec un travail relativement limité (après les phases d’analyse et de spécifications communes à toutes les approches), on peut développer un site assez proche du résultat final avec un CMS.
En revanche, des difficultés se présentent quand les fonctionnalités demandées ne sont pas prévues initialement dans le
CMS. Bien sûr, les CMS proposent en général des possibilités d’extension via un système de plugins, mais à nouveau il faut que les nouvelles fonctionnalités puissent se développer dans le cadre précis du système de plugins défini : on ne peut (ou on ne doit, pour des problèmes d’évolution et de maintenance) utiliser que ce qui est exposé au développeur.
Nous avons à faire à des solutions génériques et légèrement adaptables. L’avantage principal est la minimisation des développements, au prix d’un carcan.
C’est l’équivalent du principe du Playmobil.
Les Framework ou « cadre de travail »
En choisissant un framework Web, on ne part pas pour autant de zéro (nous considérons par exemple PHP ou Python comme le niveau zéro : pas ou très peu d’objets métiers, limités aux aspects de communication HTTP).
Le but d’un tel framework est de fournir des briques métiers au-dessus de ces langages, de mettre en place une architecture aidant à un bon développement (principalement séparation des données et de leur présentation via une architecture Model/View/Controller ou variante) et de fournir des outils pour accélérer le développement comme par exemple la génération automatique des objets métiers à partir d’un schéma de base de données.
Mais l’objectif est de fournir juste ce qu’il faut pour ne pas avoir à réinventer (et réimplémenter !) ce que l’on trouve dans la plupart des applications Web, tout en laissant une certaine souplesse pour pouvoir plus facilement développer des fonctionnalités adaptées.
C’est l’équivalent du principe du Légo.
Il convient aussi de parler des performances (vitesse). Dans les deux cas, les performances seront moindres qu’un développement (supposé correct) sans aucun outil, CMS ou framework Web. Mais cette performance serait au prix d’un développement long et coûteux, notamment pour garantir un bon niveau de maintenabilité et d’évolutivité.
Les frameworks Web apparaissent ici encore comme un compromis entre langage de programmation et CMS qui seront les moins performants.
CMS : Joomla, Typo 3 ou Typolight, Spip, wordpress
Framework : CakePHP, Zend ou Symfony