Bonnes pratiques et recettes pour la réussite de vos projets avec ASP.NET MVC

ASP.NET MVC est la mise en œuvre apportée par Microsoft du design pattern MVC. Un projet Web MVC est caractérisé par le faible couplage entre les pages de rendu HTML, les données et les différentes interactions entre ces deux couches qui va se faire dans le contrôleur.

Cette année une session au Techdays 2012 a été consacrée sur les bonnes pratiques à utiliser dans un projet ASP.NET MVC et sur les pièges à éviter. Cette session a été  animée par Rui Carvalho architecte senior.net Net, Asp.Net, MVC, Sql Server et Julien Corioland formateur et consultant .net qui travaille principalement sur les technologies Silverlight et Silverlight pour Windows Phone mais également sur ASP.NET MVC / Windows Azure.

Durant la sessions, les animateurs ont abordé les points suivants:

  • Rappel sur le design pattern MVC
  • Bonnes pratiques
  • Exemple de structuration/architecture d’un projet MVC

Rappel sur le design pattern MVC

Le modèle MVC est constitué des éléments suivants :

Modèle : représente la couche métier d’une application.

Vue : constitue les éléments d’interface utilisateurs : pages web, contrôles Web…

Contrôleur : permet de piloter l’application, il interprète les actions à réaliser et ordonne leur exécution (lecture, traitement de données et mises à jour).

Ci-dessous un schéma détaillant la relation entre les différentes couches :

Bonnes pratiques

Pourquoi choisir ASP.NET MVC?

Un projet  Web développé avec ASP.NET  MVC  a pour avantage d’être bien structuré en  proposant une architecture qui fait une séparation nette entre la couche du rendu  HTML et celle des données. Une telle architecture permet une meilleure testabilité de l’application et la rend extensible plus facilement. En effet, lors de la création d’une application ASP.NET MVC  un projet de test est généré automatiquement.

ASP.NET MVC met l’accent sur le référencement naturel,  une problématique non négligeable dans le monde du Web. Un site bien référencé par les moteurs de recherche améliore sa visibilité sur la toile et réduit ses coûts publicitaires. ASP.NET MVC, offre par son système de routage un mécanisme pour la génération d’url  décorées.

De plus, Microsoft met  à notre disposition un ensemble d’outils et moyens  pour améliorer la productivité d’un projet MVC notamment avec NuGet ,le scaffolding / Template T4 pour la génération de code et Razor le nouveau moteur de vue.

Bonnes pratiques

Démarrer un projet web ASP.NET MVC est une tâche assez simple néanmoins le démarrer correctement en est une autre.  Durant la session, une liste de recommandation a été fournie lors de la mise en place et développement d’une application web MVC :

  • Eviter de laisser la route par défaut au niveau du fichier global.asax et ajouter des contraintes au niveau des routes en utilisant les expressions régulières, des valeurs spécifiques afin de maîtriser les points d’accès  au site web.
  • Respecter le design pattern MVC en gardant une séparation nette entre le modèle de données et la vue. Une solution proposée serait de créer un projet à part pour la couche Business et accès aux données.
  • Favoriser l’utilisation des vues typées
  • Favoriser l’utilisation des « Data Annotation » qui permettront  de gérer d’une façon déclarative un ensemble d’action comme la validation de données, …
  • Utiliser la validation des données et créer aussi ses propres validateurs
  • Favoriser l’utilisation des filtres qui va permettre le rajout d’une façon déclarative d’une fonctionnalité transverse à l’application comme par exemple l’authentification. Il existe 3 types de filtres : Autorisation Filter, Exception Filter,   Action et Result Filter. A noter qu’il est possible de définir ses propres filtres.
  • Créer ses propres « HTML Helpers » pour factoriser le code.

Exemple de structuration/architecture d’un projet MVC

La deuxième partie de la session était consacrée à la présentation d’un exemple sur une architecture  « type » dans un projet. Bien sûr, il ne faut pas appliquer à la lettre ce qui est proposé sachant que la définition de l’architecture d’un projet dépend de plusieurs facteurs lié au projet lui-même. Je citerai ci-dessous les quelques points que j’ai pu noter :

  • Privilégier le design pattern SOLID
  • Utilisation d’un projet  Bootstrapper pour la gestion de la partie configuration d’une application
  • Séparation complète entre le code de l’interface utilisateur  (Vue) et le code fonctionnel en créant deux projets distincts
  • Découplage fonctionnel en favorisant l’utilisation des areas

Conclusion

J’ai trouvé cette session intéressante même si la deuxième partie de la session consacrée à l’architecture était relativement courte et pas assez détaillée. Néanmoins, cette session m’a donné une idée globale sur les points à retenir lors du développement d’une application MVC notamment comment profiter des data Annotation pour gérer tous les contrôles transverses sur une fonctionnalité(validation des données , autorisations, authentification…) sans pour autant polluer le code métier.

Avec ASP.NET MVC  nous retrouvons les fondamentaux du développements web. Nos vues sont plus simples et libérées des contrôles serveurs où la logique métier et l’affichage peuvent se mêler. Nous avons ainsi une séparation nette entre la vue, chargée uniquement de l’affichage, le modèle, responsable de la manipulation et traitement de données et le contrôleur, qui gère les interactions entre la vue et le modèle. La question qui reste c’est quand privilégier l’utilisation d’une application ASP.NET MVC à une application .NET WebForm ?

Liens Utiles:

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *