Vue d’ensemble d’ASP.NET MVC
Le modèle architectural MVC (Model-View-Controller) sépare une application en trois composants principaux : le modèle, la vue et le contrôleur.L’infrastructure ASP.NET MVC offre une alternative au modèle Web Forms ASP.NET pour la création d’applications Web. ASP.NET MVC est une infrastructure de présentation simple et facilement testable, qui (comme celle des applications utilisant des Web Forms) est intégrée aux fonctionnalités ASP.NET existantes, telles que les pages maîtres et l’authentification basée sur l’appartenance. L’infrastructure MVC est définie dans l’assembly System.Web.Mvc.
MVC est un modèle de conception standard qui est connu par de nombreux développeurs. Certains types d’applications Web tireront parti de l’infrastructure MVC. D’autres continueront à utiliser le modèle d’application ASP.NET traditionnel qui est basé sur les Web Forms et les publications (postbacks). D’autres encore combineront les deux approches, l’une n’excluant pas l’autre.
L’infrastructure MVC inclut les composants suivants :
- Modèles. Les objets de modèle sont les parties de l’application qui implémentent la logique du domaine de données de l’application. Souvent, ils récupèrent l’état du modèle et le stockent dans une base de données. Par exemple, un objet Product peut récupérer des informations dans une base de données, les exploiter, puis réécrire les informations mises à jour dans une table Products d’une base de données SQL Server.
Dans les petites applications, le modèle est souvent une séparation conceptuelle plutôt qu’une séparation physique. Par exemple, si l’application sert uniquement à lire un groupe de données et à l’envoyer à la vue, elle ne comporte pas de couche de modèle physique, ni de classe associée. Dans ce cas, le groupe de données joue le rôle d’un objet de modèle.
- Vues. Les vues sont les composants qui affichent l’interface utilisateur (IU) de l’application. En général, cette interface utilisateur est créée à partir des données du modèle. Il peut s’agir par exemple d’une vue d’édition d’une table Products affichant des zones de texte, des listes déroulantes et des cases à cocher en fonction de l’état actuel d’un objet Product.
- Contrôleurs. Les contrôleurs sont les composants qui gèrent les interventions de l’utilisateur, exploitent le modèle et finalement sélectionnent une vue permettant de restituer l’interface utilisateur. Dans une application MVC, la vue sert uniquement à afficher les informations ; le contrôleur gère les entrées et interactions de l’utilisateur, et y répond. Par exemple, il gère les valeurs de chaîne de requête et les passe au modèle, qui peut à son tour les utiliser pour interroger la base de données.
Le modèle MVC vous aide à créer des applications qui séparent les différents aspects de l’application (logique d’entrée, logique métier et logique de l’interface utilisateur) en assurant un couplage lâche entre ces éléments. Le modèle spécifie l’emplacement où chaque genre de logique doit figurer dans l’application. La logique de l’interface utilisateur appartient à la vue. La logique d’entrée appartient au contrôleur. La logique métier appartient au modèle. Cette séparation vous aide à gérer la complexité lorsque vous générez une application car elle vous permet de vous concentrer sur un aspect de l’implémentation à la fois. Par exemple, vous pouvez vous concentrer sur la vue sans dépendre de la logique métier.
Le couplage lâche entre les trois principaux composants d’une application MVC favorise également le développement en parallèle. Par exemple, un premier développeur peut se concentrer sur la vue, un deuxième sur la logique du contrôleur et un troisième sur la logique métier du modèle.
Avant de décider d’utiliser l’infrastructure MVC ou le modèle Web Forms pour un site Web spécifique, évaluez les avantages de chaque approche.
Avantages d’une application Web basée sur MVC
L’infrastructure ASP.NET MVC offre les avantages suivants :
- Elle permet de gérer plus facilement la complexité en décomposant une application en modèle, vue et contrôleur.
- Elle n’utilise pas l’état d’affichage ni les formulaires serveur. L’infrastructure MVC s’avère par conséquent idéale pour les développeurs souhaitant contrôler totalement le comportement d’une application.
- Elle utilise un modèle de contrôleur frontal qui traite les requêtes de l’application Web par le biais d’un contrôleur unique. De cette façon, vous pouvez concevoir une application prenant en charge une infrastructure de routage complète. Pour plus d’informations, consultez Front Controller (Contrôleur frontal).
- Elle offre une meilleure prise en charge du développement axé sur des tests.
- Elle est parfaitement adaptée aux applications Web qui sont prises en charge par de grandes équipes de développeurs et aux concepteurs Web qui ont besoin d’un haut niveau de contrôle sur le comportement des applications.
Avantages d’une application Web basée sur des Web Forms
L’infrastructure basée sur des Web Forms offre les avantages suivants :
- Elle prend en charge un modèle d’événement permettant la conservation de l’état via HTTP, mécanisme qui s’avère particulièrement utile pour le développement d’applications Web métier. L’application basée sur des Web Forms fournit des dizaines d’événements pris en charge dans des centaines de contrôles serveur.
- Elle utilise un modèle de contrôleur de pages qui ajoute des fonctionnalités aux pages individuelles. Pour plus d’informations, consultez Page Controller (Contrôleur de pages).
- Elle utilise l’état d’affichage et les formulaires serveur, ce qui peut faciliter la gestion des informations d’état.
- Elle est parfaitement adaptée aux petites équipes de concepteurs et de développeurs Web qui souhaitent tirer parti des nombreux composants disponibles pour le développement rapide d’applications.
- En général, elle s’avère moins complexe pour le développement d’applications car les composants (la classe Page, les contrôles, etc.) sont étroitement intégrés et requièrent habituellement moins de code que le modèle MVC.
- Séparation des tâches d’application (logique d’entrée, logique métier et logique de l’interface utilisateur), testabilité et développement axé sur des tests. Tous les contrats de base de l’infrastructure MVC sont basés sur des interfaces et peuvent être testés à l’aide d’objets fictifs qui simulent le comportement d’objets réels de l’application. Les tests unitaires de l’application sont à la fois rapides et flexibles étant donné que vous pouvez les effectuer sans avoir à exécuter les contrôleurs dans un processus ASP.NET. Vous pouvez utiliser toute infrastructure de test unitaire compatible avec .NET Framework.
- Infrastructure extensible et enfichable. Les composants de l’infrastructure ASP.NET MVC sont conçus de façon à pouvoir être facilement remplacés ou personnalisés. Vous pouvez incorporer vos propres moteur d’affichage, stratégie de routage des URL et sérialisation des paramètres de méthode d’action, ainsi que d’autres composants. L’infrastructure ASP.NET MVC prend en charge également l’utilisation des modèles de conteneur Injection de dépendances et Inversion de contrôle. L’injection de dépendances vous permet d’injecter des objets dans une classe, au lieu de faire appel à la classe pour qu’elle crée les objets eux-mêmes. L’inversion de contrôle spécifie que si un objet requiert un autre objet, le premier objet doit obtenir le deuxième à partir d’une source extérieure, telle qu’un fichier de configuration. Ce processus facilite les tests.
- Prise en charge complète du routage ASP.NET, qui est un composant de mappage d’URL puissant vous permettant de générer des applications dont les URL sont compréhensibles et peuvent faire l’objet de recherche. Les URL ne doivent pas nécessairement inclure des extensions de nom de fichier et sont conçues pour prendre en charge des modèles de dénomination d’URL adaptés à l’optimisation des moteurs de recherche (SEO, Search Engine Optimization) et à l’adressage au format REST (Representational State Transfer).
- Prise en charge du balisage des fichiers de balisage de page ASP.NET (fichiers .aspx), de contrôle utilisateur (fichiers .ascx) et de page maître (fichiers .master) existants en tant que modèles de vue. Vous pouvez utiliser les fonctionnalités ASP.NET existantes avec l’infrastructure ASP.NET MVC, à savoir les pages maîtres imbriquées, les expressions en ligne (<%= %>), les contrôles serveur déclaratifs, les modèles, les liaisons de données, la localisation, etc.
- Prise en charge des fonctionnalités ASP.NET existantes. ASP.NET MVC vous permet d’utiliser des fonctionnalités telles que l’authentification par formulaire et l’authentification Windows, l’autorisation d’URL, l’appartenance et les rôles, la mise en cache de sortie et de données, la gestion d’état de session et de profil, le contrôle d’état, le système de configuration et l’architecture du fournisseur.