[Teched 2007] ASP.NET Model View Controller (MVC)
Matt Gibbs - ASP.NET Development Manager
Sans hésitation la session la plus attendue de la journée de mon coté depuis la récente annonce il y'a trois semaines de Scott Guthrie sur l'apparition d’un Framework MVC pour ASP.NET (salle d'ailleur pleine).
Rappel sur la roadmap ASP.NET: ASP.NET AJAX 1.0 => .NET Framework 3.5 (ASP.NET 2.0 + features) => nouveau .NET Framework annoncé au milieu de l'année prochaine
MVC en général: Maintient une séparation propre des différentes couches applicatives
- Facilement testable en TDD (la couche graphique est réduite à l'affichage de l'HTML)
- Facile a maintenir
- Les vues ne contiennent pas de logique métier
- Les vues n'ont pas la connaissance des couches inférieures
ASP.NET MVS Framework:
Intégré avec ASP.NET:
- Utilisation possible des fonctionnalités standards tels que le cache, la session, le profile..
- Support des langages statiques standards mais aussi des dynamiques
Ajout d'outils:
- Intellisense, refactoring, debug
- Modèles de projets
- Les view .aspx concernant le mode design de Visual Studio
ASP.NET MVC Framework n'est pas WebForms 4.0, c'est battit sur ASP.NET 2.0 et fonctionne bien avec des frameworks existants tels que NHibernate, Castle ou Brail.
Cycle de fonctionnement:
- Le serveur Web récupère la requête du navigateur
- Elle est redirigé vers le contrôleur
- Celui ci est activé
- Les actions du contrôleur sont appelées
- Le contrôleur travaille avec le modèle et la saisie utilisateur
- Le contrôleur génère une vue
- L'url de sortie pointe vers le contrôleur
Request => Route => controller => ViewFactory => View => Response
Comment cela marche: Les requête HTTP sont redirigées sur le contrôleur, et plus sur la page .aspx, le contrôleurs est ensuite chargé de sélectionner la vue (la page) à afficher.
Un des gros avantages de l'utilisation de MVC est que cela simplifie la phase de test de l'application: beaucoup d'éléments sont remplaçables par des mocks: IHttpContet, IHttpResponse, IHttRequest. Il n'est pas cependant nécessaire d'utiliser ceux-ci pour remplacer tout ASP.NET: La factory de génération de page seule est facilement utilisable.
Une session très intéressante pour un sujet qui mérite d'être plus creusé (je n'ai pas été convaincu personnellement, donc il va falloir essayer de mettre en place tout ça rapidement)
Pour aller plus loin:
- Blog de Scott Guthrie: http://weblogs.asp.net/scottgu/archive/2007/10/14/asp-net-mvc-framework.aspx