« retourner à la page principale du blog

Conception d’applications web avec l’architecture MVC

Un billet rapide aujourd’hui pour illuminer certains qui ne connaitrait pas encore l’architecture MVC. C’est un pattern qui sépare la logique de la présentation. MVC est un acronyme pour Model-View-Controller.

En quelques mots, le modèle gère la base de donnée, le contrôleur fait le lien entre le modèle et la vue, et la vue est ce que l’utilisateur voit. Chacun de ces composants, dans le code, est générallement une classe.

Vue

C’est ce que l’utilisateur voit. Dans le cas d’une application web, c’est, en gros, le code HTML. C’est le contrôleur qui décide de ce que va être la vue. Lorsque l’utilisateur clique sur un lien, c’est le contrôleur qui reçoit le clic, pas la vue. La vue ne fait qu’être ce que l’utilisateur voit.

Contrôleur

C’est ce qui fait le lien entre le modèle et la vue. L’utilisateur fait un clic, le contrôleur reçoit le clic et décide de ce qu’il en fera. Il communique avec le modèle pour traiter l’information reçue et/ou pour aller en chercher. Il décidera ensuite de la vue qui sera présentée à l’utilisateur.

Modèle

C’est ce qui contient tout le business logic. Il sert de lien avec la base de donnée. C’est générallement à cet endroit que va se faire la « grosse job »: rêquetes aux bases de données, validations, arranger les données d’une manière correct (en objets ou array ou autre) pour remettre au contrôleur.

Concrètement sur internet

Un utilisateur se fait présenter un formulaire pour entrer ses coordonnées lors de l’achat d’un produit (c’est la vue). Il entre ses informations et envoie le formulaire (reçu par le contrôleur). Le contrôleur demande au modèle d’inscrire l’achat dans la base de donnée. Le modèle fait une validation des champs et se rend compte que le numéro de carte de crédit ne contient pas assez de chiffres. Il retourne l’erreur au contrôleur. Le contrôleur présente le formulaire (la vue) avec les erreurs pour qu’elles soient corrigées. L’utilisateur renvoie le formulaire corrigé. Le contrôleur renvoie les informations au modèle pour inscrire dans la base de donnée. Le modèle effectue la validation avec succès et ajoute l’achat à la base de donnée. Il informe le contrôleur que tout est déroulé avec succès. Le contrôleur affiche le message de succès (la vue) à l’utilisateur.

Avantages

L’avantage principal de travailler avec l’architecture MVC, c’est qu’il permet de très bien séparer la logique de la présentation. La vue n’aura aucune logique d’imbriquée, ce qui facilitera le travail d’équipe. Aussi, étant donné que tout est très bien séparé, il est très facile d’ajouter et de modifier au code sans que le reste ne s’effondre. C’est un pattern qui se prête très bien au développement agile.

Inconvénients

Le fait de travailler avec un pattern dans un très petit projet peut alourdir inutilement la tâche. Lorsque seulement quelques lignes de codes auraient suffi, utiliser un pattern comme MVC est générallement inadapté. Aussi, on doit s’assurer que toutes les personnes qui travailleront sur le projet sont familières avec le pattern MVC, même si ce n’est pas très long à comprendre.

En résumé

La raison pour laquelle je vous parlais de ça, c’est que mon engoûment pour le MVC est revenu tout récemment. Il y a quelque temps, j’avais fait une petite visite de Ruby on Rails, qui utilise (extrêmement bien à mon avis) le MVC. Par contre, même pour les petites applications, Ruby on Rails consomme beaucoup de mémoire vive et demande des connaissances pour le déploiement qui peuvent compliquer les choses avec certains clients. Ces compétences, par exemple, ne sont pas nécessaires pour déployer une application en PHP. C’est la raison qui m’a fait mettre Rails de côté pour quelque temps.

Par contre, tout récemment, en fouillant un peu pour trouver le CMS parfait (que je n’ai toujours pas trouvé), je suis tombé sur CodeIgniter. C’est un framework MVC en PHP, très rapide, qui ne demande pas beaucoup de ressources et qui est très simple à utiliser. Son défaut, à mon avis, est qu’il est écrit en PHP4. En lisant un peu sur le net par rapport à CodeIgniter, j’ai découvert qu’il y avait un fork qui s’appelle Kohana qui est codé en PHP5. De ce que j’en vois à date, c’est extrêmement bien et je vous conseille le coup d’oeil!

Laisser un commentaire

« retourner à la page principale du blog