L’architecture MVC dans le développement d’un site internet

Publié par Gui dans Développement, Internet

L’architecture MVC (modèle, vue et contrôleur) est un concept très puissant qui intervient dans la réalisation d’une application. Son principal intérêt est la séparation des données (modèle), de l’affichage (vue) et des actions (contrôleur).

Ce concept peut très bien être appliqué à un site internet. De nombreux sites internet disposent d’une plateforme d’administration pour modifier facilement les contenus. Il est bien évident que l’utilisateur qui va utiliser ce système pour créer des pages ne doit pas modifier la structure complète du site, ni les actions ni l’affichage. Pour qu’il ne modifie que les données, celles-ci doivent alors être isolées.

C’est sur ce constat que se base le système MVC. Chaque partie est bien distincte. Les données peuvent provenir d’une source quelconque et la vue peut être conçue par des webdesigners n’ayant pas de connaissance en programmation.

Avantages du MVC

L’approche MVC apporte de réels avantages:

  • Une conception claire et efficace grâce à la séparation des données de la vue et du contrôleur
  • Un gain de temps de maintenance et d’évolution du site
  • Une plus grande souplesse pour organiser le développement du site entre différents développeurs (indépendance des données, de l’affichage (webdesign) et des actions)

Inconvénients

L’inconvénient majeur du modèle MVC n’est visible que dans la réalisation de petits projets, de sites internet de faible envergure.

En effet, la séparation des différentes couches nécessite la création de plus de fichiers (3 fois plus exactement):

  1. Un fichier pour le modèle
  2. Un fichier pour le contrôleur
  3. Un fichier pour la vue

Il n’est donc pas très intéressant de recourir à ce système dans ce cas là.

MVC, comment ça marche?

L’architecture MVC est donc décomposée en trois étapes:

1. Le Modèle

Le modèle correspond aux données, la plupart du temps stockées dans une base de données. Mais celles-ci peuvent également êtres contenues dans un fichier XML ou dans des fichiers texte.

Les données peuvent être exploitées sous forme de classes, dans un langage de programmation orientée objet (comme PHP5).

2. Le Contrôleur

Le contrôleur est l’élément qui va utiliser les données pour les envoyer à la vue. Son rôle est donc de récupérer les informations, de les traiter en fonction des paramètres demandés par la vue (par l’utilisateur, exemple: afficher les derniers articles), puis de renvoyer à la vue les données afin d’être affichées.

Le contrôleur peut donc instancier différents objets (classe User, classe Articles, …) qui enverront des requêtes vers la base de données ou récupéreront des données XML.

La transmission à la vue des données récupérées se fait généralement à l’aide d’un template: insertion des données dans un fichier HTML qui va être envoyé au navigateur.

3. La vue

La vue correspond à un fichier HTML la plupart du temps (peut être un fichier XML avec une feuille de style XSL). Elle se contente d’afficher le contenu qu’elle reçoit sans avoir connaissance des données.

Elle ne contient que les informations liées à l’affichage. Dans le cas d’une page HTML, elle contient les éléments <h1>, <p>, <div> … dans lesquels vont venir s’insérer les contenus.

Conclusion

L’architecture MVC est une solution très intéressante et très puissante, à mettre en œuvre dans de grands projets de préférence.

L’indépendance des trois couches est très importante, car c’est grâce à cette différenciation que l’architecture puise sa puissance et sa logique.

Il est ainsi facile de mettre à jour le design de son site, sans toucher aux données ni à la façon dont elles sont organisées. Inversement, il est aussi facile de modifier la structure de stockage des données ou la manière dont elles sont gérées sans bouleverser l’affichage.

Plus de lecture

14 commentaires

  1. yann

    Merci guillaume,
    As-tu déjà utilisé un Framework MVC PHP ? Si oui lesquels ?
    Pour ma part j’utilise CodeIgniter pour 2 projets déjà et j’en suis assez satisfait.

    Autre chose… Je me demande toujours quelle est la meilleure solution pour créer un flux rss…
    Ma technique c’est de créer une VIEW comme tout autre VIEW : une fichier php qui contient les les tags XML déjà écrits, et qui va juste, à l’aide d’un ECHO écrire les variables envoyés par le CONTROLER.
    Je n’écris pas mon XML à l’aide des fonctions createNode etc …. Le XML n’existe donc pas en tant que fichier.
    Est-ce que c’est une bonne méthode ?

  2. CANYON

    3 mots en passant: j’ai pas regardé les détails mais c’est la meilleure définition et la plus compréhensible que j’ai vu pour l’instant!

    ++

  3. loic

    pour répondre à Yann
    moi j’utilise tout le temps du php pour mes flux rss, et personnelement, je trouve que c’est une solution efficace et sans perte de temps, si on a pas envie de faire un programme qui vas crée un fichier xml, tout ça pour du rss ..

    mais moi je n’utilise pas de Framework php, je pense qu’il est plus raisonnable de crée son propre model, et biensur, de pourquoi pas se baser sur ceux déja éxistant !

  4. Yassine

    Bonsoir ,

    excusez -moi mais je trouve que vous vous contredisiez, dans les inconvénients vous avez cité que le MVC n’est pas très pratique pour les grands projet à cause des problèmes de visibilité du code ,alors que dans la conclusion vous avez dis qu’il est surtout recommandé pour les grands projet …

    pouvez-vous nous expliquez ce point s’il vous plait.

    • Gui
      • malih

        bonjour

        Merci de nous bien expliquer ce dernier commentaire qui concerne les inconvénient du MVC

        😉

    • Gui
  5. besma

    merci mais ou l’image explicatif

  6. Dan

    Serait bien d’avoir un exemple concret avec l’orienté objet, PDO et MVC. Quelque chose de base pour illustré la chose.

  7. polo

    Bonjour SVP aidez moi. je veux créer un site de e-commerce sous MVC

  8. anonomyse

    j’utilise la modele MVC dans mon projet et je trouve qu’il est complexe 😉

  9. omen

    usefull post thanks

  10. Michel

    Bjr
    Qu’en est-il du référencement ? Comment le réaliser ?
    Merci,

Laisser une réponse


Post shadow