Frameworks & API

La logique MVC dans le développement web

Le 16 octobre 2007 à 14:12 par Séverin

Quand on développe des applications lourdes et qu’on travaille en équipe, une organisation assez stricte du code s’avère rapidement indispensable. La logique MVC est un modèle d’organisation basé sur 3 éléments : Modèle, Vue et Contrôleur.

  • Le modèle est la partie qui s’occupe des données. En développement PHP/MySql, il est généralement composé des classes représentant les tables de la base de données.
  • Les vues sont les interfaces utilisateurs. Dans le cas du développement web, ce seront toutes les sorties JS/XML/HTML.
  • Et enfin les contrôleurs sont le pont entre le modèle et les vues. Ils reçoivent les requêtes de l’utilisateurs et appellent les fonctions du modèle et les vues en conséquence.

MVC

Avec ce type d’organisation, on peut aisément partager le travail entre les designers, la base de données et l’organisation des pages.
De plus, une fois l’application en place, il est facile de modifier un de ces éléments sans avoir à toucher aux autres.
Et comme le code est réutilisable, il est très facile et rapide d’écrire de nouvelles pages.

Si la logique MVC semble attirante, il faut quand même se méfier et bien réfléchir avant de l’utiliser : Correspond elle vraiment à mes besoins ?
Toute l’organisation du code nécessite des traitements additionnels comme la transformation des données en objets et en tableaux.
Cet ajout de code a pour conséquence des pages plus lentes à afficher (hors utilisation du cache) et une consommation de ressources plus importante.

Avantages :

  • Séparation des compétences (design, base de données, application)
  • Simplicité de mise à jour
  • Vitesse de création de pages

Inconvénient :

  • Pages plus lentes à afficher (hors cache)
  • Plus de ressources consommées
  • Développement initial plus long

Et si cet article vous fait penser qu’il faut passer au MVC, voilà quelques Frameworks PHP :
Akelos - Un portage de Ruby on Rails port en PHP
BareBonesMVC - Très simple : un seul fichier, pas de configuration – PHP5
CakePHP - Basé sur les concepts de Ruby on Rails
CodeIgniter - Framework très complet
DragonPHP - MVC2 (un seule contrôleur centralise tout) - PHP5
Odin Assemble - Très léger
Symfony Framework - Framework très complet - PHP 5
TinyMVC Framework - Très léger
Zend Framework - Framework très complet - PHP 5

9 commentaires »

Gravatar

Commentaire de No'

le 17 octobre 2007 à 22:56

Y’a quand même autre chose que PHP dans le développement web… Celui qui est considéré comme le pionnier dans les frameworks web MVC, c’est Ruby On Rails, suivi de peu (chronologiquement) par Django. Et Turbogears.
Et la logique MVC s’exporte très bien pour des domaines “hors web”.

Par contre, j’aimerais bien comprendre ce que l’auteur veut dire par : “inconvénient : Développement initial plus long”. A mon avis, au contraire, le développement est redoutablement accéléré / facilité par les Frameworks web. Parce que toutes les scories rébarbatives sont gérées automagiquement par l’outil, à la base.

Gravatar

Commentaire de eMeRiKa

le 18 octobre 2007 à 1:14

On peut très bien faire du MVC dans passer par un framework!! Ce qui permet plus de souplesse dans le code!!

Gravatar

Commentaire de Séverin

le 18 octobre 2007 à 9:50

@No :
J’ai pris comme exemple PHP/MySql, mais finalement je présente le MVC appliqué au web de manière générale. Tout ce qui est décrit dans l’article s’applique à tous les langages web.
Pour ce qui est de s’exporter, le MVC vient justement du hors web. Mais les implications ne sont pas les mêmes.
Et pour le “Développement initial plus long”, il ne faut pas oublier que la formation à un nouveau framework ou la création de celui-ci prend pas mal de temps. Mais une fois maitrisé en effet on gagne énormément de temps, c’est pour ça le “initial”.

@eMeRiKa :
C’est en effet possible, mais dans ce cas tu perds une grande parti de la vitesse de développement que permet le MVC. Pire, tu perd une partie de l’assurance de qualité qu’apporte le MVC. L’avantage des frameworks c’est justement d’empêcher de faire tout ce qu’on veut… dont des bugs.

Gravatar

Commentaire de eMeRiKa

le 18 octobre 2007 à 11:51

Personnellement je code en MVC sans framework et c’est certes de moins bonne qualité mais on gagne en simplicité et niveau bugs je vois aucune différence!!!

Gravatar

Commentaire de Loïc CHOLLIER

le 18 octobre 2007 à 19:13

Personellement, depuis que j’ai gouté à RoR, pour ce que j’en faisais, je ne me vois pas recoder en php. Certes l’apprentissage est un peu long mais alors après les operations sont vraiment simplifiées (gestion des templates, on ne touche pas aux requêtes SQL etc). Le MVC me permet de vraiment distinguer la structure de mon site (ou autre appli), à appliquer !

Gravatar

Commentaire de Tommy

le 20 octobre 2007 à 12:32

J’apprends pour le moment à utiliser le MVC en développant en Java, je comprends bien le mécanisme, mais j’ai du mal à voir cela dans le développement Web…

Est-ce qu’il serait possible d’avoir un petit exemple ?

Merci

Gravatar

Commentaire de Séverin

le 20 octobre 2007 à 22:54

PAs facile d’expliquer ça dans un commentaire. Disons simplement que toute la partie évènementielles que tu peux retrouver en java doit être remplacer par des urls.

En java, ça serait comme si tout les évènements relançait complètement le logiciel avec suffisamment de paramètres pour qu’il se réinitialise au bon endroit.

Mais heureusement, il y’a les sessions et donc les paramètres peuvent se limiter à définir le contrôleur concerné, la fonction à appeler dans ce contrôleur et la liste des paramètres de l’évenement.

En gros une URL MVC ressemble à : index.php?contrôleur=blog&action=afficherArticle&idArticle=5

A partir de ça, je demande à mon fichier index.php de charger le contrôleur “blog” et d’en appeler la fonction “AfficherArticle(5)”.

En espérant que ça sera plus parlant. J’éssaierait de montrer des exemples de code simpliste (trop pour un bon MVC) mais qui seront peut être plus explicite pour certains.

Gravatar

Commentaire de Tommy

le 21 octobre 2007 à 10:26

Merci Séverin, je comprends déjà un peu plus son utilisation dans le Web

Gravatar

Commentaire de Kimi

le 7 mars 2008 à 18:12

“Celui qui est considéré comme le pionnier dans les frameworks web MVC, c’est Ruby On Rails”

Je suis pas vraiment d’accord avec ce point de nombreux framework web existé dejà avant l’arrivée de RoR.

Merci pour l’article

Laisser un commentaire

Votre Nom

Votre E-mail (obligatoire mais ne sera pas publié)

Votre Site ou blog

Votre commentaire

Valid XHTML 1.0 Transitional