En tant qu’entrepreneur ou responsable d’un projet web vous allez être confronté à ce choix. Cela se fera peut-être indirectement ou par vos soins mais il sera obligatoirement fait par quelqu’un à un moment donné. Alors autant savoir de quoi il retourne !
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.
Comparaison entre l’utilisation d’un CMS et d’un framework Web
Avec un CMS
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.
Avec un framework (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 souplesse pour pouvoir plus facilement développer des fonctionnalités adaptées.
Performances
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, Symfony, Yii