Modèle-vue-contrôleur

Modèle-Vue-Contrôleur (abr. MVC) est un motif 'architecture logicielle destiné aux interfaces graphiques lancé en 1978 et très populaire pour les applications web. Le motif est composé de trois types de modules ayant trois responsabilités différentes: les modèles, les vues et les contrôleurs.

Un modèle contient les données à afficher. Une vue contient la présentation de l'interface graphique. Un contrôleur contient la logique concernant les actions effectuées par l'utilisateur.

Ce motif est utilisé par de nombreux frameworks pour applications web tels que , , ASP.NET MVC, Spring, Struts ou

Sommaire

1 Histoire 2 Description 2.1 MVP et MVVM 2.2 Dans les applications web interactions entre le modèle, la vue et le 3 Flux de traitement contrôleur 4 Avantages 5 Différence avec l'architecture trois tiers 6 Exemples d’architecture MVC 6.1 En ASP.NET 6.2 En ++ 6.3 En JavaScript 6.4 En ECMAScript 6.5 En 6.6 En Objective C 6.7 En 6.8 En PHP 6.9 En Python 6.10 En Ruby 7 Voir aussi 8 Notes et références

Histoire

1 Le motif MVC a été créé par Trygve Reenskaug lors de sa visite du Palo Alto Research Center (abr. PARC) en 1978 . Le nom original est Thing Model View Editor 1 pattern, puis il a été rapidement renommé Model-View-Controller pattern . Le patron MVC a été utilisé la première fois pour créer des interfaces graphiques avec le 1 langage de programmation en 1980 .

Description

2 Une application conforme au motif MVC comporte trois types de modules: les modèles, les vues et les contrôleurs .

Le modèle 3 C'est l'élément qui contient les données ainsi que de la logique en rapport avec les données: validation, lecture et enregistrement. . Il peut, dans sa forme la plus 3 2 simple, contenir uniquement un simple texte, voire des données beaucoup plus compliquées . Le modèle représente l'univers dans lequel s'inscrit l'application . Par exemple pour une application de banque, le modèle représente des comptes, des clients, ainsi que les opérations telles que dépôt et retraits, et vérifie que les retraits 2 3 ne dépassent pas la limite de crédit . Le modèle est indépendant de la vue et du contrôleur et ne s'en sert pas .

La vue 3 3 C'est la partie visible d'une interface graphique . La vue se sert du modèle, et peut être un diagramme, un formulaire, des boutons, etc . Une vue contient des 3 2 éléments visuels ainsi que la logique nécessaire pour afficher les données provenant du modèle . Dans une application web une vue contient des balises HTML .

Le contrôleur 3 C'est le module qui traite les actions de l'utilisateur, modifie les données du modèle et de la vue . l'ensemble 3 Les trois éléments sont indépendants les uns des autres, le modèle ne se sert ni de la vue ni du contrôleur, il peut cependant leur envoyer des messages . Il y a deux 3 liens entre la vue et le modèle: premièrement la vue lit les données du modèle et deuxièmement reçoit des messages provenant du modèle . Dans la mesure où une 3 vue est associée à un modèle et un modèle est indépendant, un même modèle peut être utilisé par plusieurs vues . 3 Le contrôleur dépend de la vue et du modèle: la vue comporte des éléments visuels que l'utilisateur peut actionner . Le contrôleur répond aux actions effectuées sur 3 la vue et modifie les données du modèle . 2 Dans le cas d'un View model, le modèle contient les données que le contrôleur transmet à la vue . Dans le cas d'un Domain model il contient toutes les données en 2 rapport avec l'activité, ainsi que la logique des opérations de modification et de validation des données .

MVP et MVVM

4 Les motifs Model-View-Presenter (abr. MVP) et Model-View-ViewModel (abr. MVVM) sont semblables au motifs modèle-vue-contrôleur, à quelques différences près .

Dans le patron MVP, le contrôleur est remplacé par une présentation. La présentation est créée par la vue et lui est associée par une interface. Les actions 4 utilisateur déclenchent des événements sur la vue, et ces événements sont propagés à la présentation en utilisant l'interface . Dans le patron MVVM il y a une communication bidirectionnelle entre la vue et le modèle, les actions de l'utilisateur entraînent des modification des données du 4 modèle .

Dans les applications web

2 Le motif MVC a été créé dans le but de mettre en oeuvre des interfaces utilisateur . Certains détails sont alignés avec le langage Smalltalk, mais les grandes lignes 2 2 peuvent s'appliquer à n'importe quel environnement . Le cycle action->mise à jour->affichage induit par ce patron est bien adapté aux applications web . De plus le 2 patron impose la séparation des sujets, et les balises HTML sont ainsi confinées aux vues, ce qui améliore la maintenabilité de l'application . C'est le framework pour 2 applications web Ruby on Rails qui a apporté un regain d'intérêt pour ce patron . 1 Ce patron est utilisé par de nombreux frameworks pour applications web tels que Ruby on Rails, Django, ASP.NET MVC, Spring, Struts ou Apache Tapestry . 5 Dans la mise en oeuvre classique du patron MVC, la vue attend des modifications du modèle, puis modifie la présentation des éléments visuels correspondants . Cette 5 mise en oeuvre est appliquée pour les applications de bureau avec des framework comme Swing . Le protocole HTTP ne permet pas cette mise en oeuvre pour les 5 applications web. Pour ces dernières, lors d'une action de l'utilisateur, le contenu de la vue est recalculé puis envoyé au client .

Flux de traitement

En résumé, lorsqu'un client envoie une requête à l'application :

la requête envoyée depuis la vue est analysée par le contrôleur (par exemple un clic de souris pour lancer un traitement de données) ; le contrôleur demande au modèle approprié d'effectuer les traitements et notifie à la vue que la requête est traitée (via par exemple un handler ou callback) ; la vue notifiée fait une requête au modèle pour se mettre à jour (par exemple affiche le résultat du traitement via le modèle).

Avantages

Un avantage apporté par ce modèle est la clarté de l'architecture qu'il impose. Cela simplifie la tâche du développeur qui tenterait d'effectuer une maintenance ou une amélioration sur le projet. En effet, la modification des traitements ne change en rien la vue. Par exemple on peut passer d'une base de données de type SQL à XML en changeant simplement les traitements d'interaction avec la base, et les vues ne s'en trouvent pas affectées.

Le MVC montre ses limites dans le cadre des applications utilisant les technologies du web, bâties à partir de serveurs d'applications [réf. nécessaire]. Des couches 6 supplémentaires sont alors introduites ainsi que les mécanismes d'inversion de contrôle et d'injection de dépendance .

Différence avec l'architecture trois tiers

L'architecture trois tiers est un modèle en couches, c'est-à-dire que chaque couche communique seulement avec ses couches adjacentes (supérieures et inférieures) et le flux de contrôle traverse le système de haut en bas. Les couches supérieures contrôlent les couches inférieures, c'est-à-dire que les couches supérieures sont toujours sources d'interaction (clients) alors que les couches inférieures ne font que répondre à des requêtes (serveurs).

Dans le modèle MVC, il est généralement admis que la vue puisse consulter directement le modèle (lecture) sans passer par le contrôleur. Par contre, elle doit nécessairement passer par le contrôleur pour effectuer une modification (écriture). Ici, le flux de contrôle est inversé par rapport au modèle en couches, le contrôleur peut alors envoyer des requêtes à toutes les vues de manière qu'elles se mettent à jour.

Dans l'architecture trois tiers, si une vue modifie les données, toutes les vues concernées par la modification doivent être mises à jour, d'où l'utilité de l'utilisation du MVC au niveau de la couche de présentation. La couche de présentation permet donc d'établir des règles du type « mettre à jour les vues concernant X si Y ou Z sont modifiés ». Mais ces règles deviennent rapidement trop nombreuses et ingérables si les relations logiques sont trop élevées. Dans ce cas, un simple rafraîchissement des vues à intervalle régulier permet de surmonter aisément ce problème. Il s'agit d'ailleurs de la solution la plus répandue en architecture trois tiers, l'utilisation du MVC étant moderne et encore marginale.

Exemples d’architecture MVC

En ASP.NET

ASP.NET MVC, s'appuie sur le framework Microsoft .NET 3.5 pour réaliser des applications ASP.NET selon le modèle MVC avec Visual Studio

En C++

Qt Microsoft Foundation Class (MFC)

En JavaScript

Sencha ExtJS 4 JavascriptMVC Backbone.js AngularJS Ember.js

En ECMAScript

Adobe Flex, contrôleur en ActionScript 3 XUL, utilisé pour construire les logiciels de la fondation Mozilla, repose sur un modèle MVC : Modèle : XML, SQL et RDF Vue : XUL, HTML et CSS Contrôleur : XBL et JavaScript

En Java

JavaServer Faces Struts Spring MVC Swing, l'interface graphique de Java SWT Play! PureMVC ZeroCouplage

En Objective C

Cocoa

En Perl

Frameworks orientés Web en Perl :

Catalyst ; CGI::Application : basé sur le module Perl CGI.pm ; ; Gantry : similaire à Django ; Jifty ; MasonX ; MayPole : superposition de ; O2 ; Plack ; Solstice ; Squatting.

En PHP

Frameworks basés sur l'architecture MVC :

Agavi CakePHP CodeIgniter Copix Dynatrix FuelPHP Gest-HVSL Hoa Jelix ! Platform Kinkama MKFramework Phalcon_(framework) MODx Open Postnuke TemplatePP qui s’appuie sur le Zend Framework Framework Zend Framework 7 L'utilisation d'un Framework n'est pas une obligation .

En Python

Turbogears Django Pylons

En Ruby

Ruby on Rails

Voir aussi

Architecture trois tiers Échafaudage Observateur (patron de conception) Modèle-vue-présentation : architecture dérivée de MVC Présentation, abstraction, contrôle

Notes et références

1. (en)Stephen Walther,ASP.NET MVC Framework Unleashed,Sams Publishing - 2009, (ISBN 9780768689785) 2. (en)Adam Freeman et Steven Sanderson,Pro ASP.NET MVC 3 Framework,Apress - 2011, (ISBN 9781430234043) 3. (en)Joey Lott et Danny Patterson,Advanced ActionScript with Design Patterns,Adobe Press - 2007,Modèle:ISNB 4. (en)John Ciliberti,ASP.NET MVC 4 Recipes: A Problem-Solution Approach,Apress - 2013, (ISBN 9781430247746) 5. (en)Colin Yates - Seth Ladd - Marten Deinum - Koen Serneels et Christophe Vanfleteren,Pro Spring MVC: With Web Flow,Apress - 2012, (ISBN 9781430241553) 6. (en) Fabien Potencier, « What is Dependency Injection? » (http://fabien.potencier.org/article/11/what-is-dependency-injection), 26 mars 2009. 7. http://blog.nalis.fr/index.php?post/2009/10/19/Architecture-%3A-Le-Design-Pattern-MVC-en-PHP exemple d'implémentation MVC en PHP ]

Ce document provient de « https://fr.wikipedia.org/w/index.php?title=Modèle-vue-contrôleur&oldid=133681656 ».

Dernière modification de cette page le 16 janvier 2017, à 09:57. Droit d'auteur : les textes sont disponibles sous licence Creative Commons attribution, partage dans les mêmes conditions ; d’autres conditions peuvent s’appliquer. Voyez les conditions d’utilisation pour plus de détails, ainsi que les crédits graphiques. En cas de réutilisation des textes de cette page, voyez comment citer les auteurs et mentionner la licence. Wikipedia® est une marque déposée de la Wikimedia Foundation, Inc., organisation de bienfaisance régie par le paragraphe 501(c)(3) du code fiscal des États-Unis.