Pourquoi choisir ASP.Net MVC plutôt que ASP.Net Webforms

Cet article est une traduction en français de l’article que j’ai publié hier (Why choose ASP.Net MVC instead of ASP.Net Webforms?). A l’avenir, j’écrirai l’ensemble de mes articles en français à de rares exceptions.

Les différentes couches dans une application ASP.Net Webforms

WebForms_Archi

Je souhaite avant tout résoudre mes problèmes avec les tests automatisés

Webforms n’a pas été conçu en gardant à l’esprit d’être testé simplement. Le but premier était de rendre le web « stateful », mais c’est une autre histoire :). En fait, ASP.Net Webforms rend intrinsèquement difficile la gestion de la « Separation of Concerns » (SoC) dans votre code.

Alors bien sûr, je peux enregistrer des tests web d’intégration (mais vous devriez savoir que ce n’est pas suffisant pour avoir une éuipe avec une bonne productivité (les tests unitaires simplifient la maintenabilité et le refactoring de code)), et c’est presque l’unique solution pour tester une page webform, avec son, plutôt réputé, code-behind.

Est ce que ASP.Net MVC a été créé pour rendre possible le testing de la logique métier intestable dans le code-behind?

Non. Tout développeur qui souhaitait écrire du code propre et testé avec Webforms, pouvait utiliser le pattern MVP (plus simple à implémenter avec Webforms que MVC ou MVVM) Ce pattern nous offre la possibilité d’abstraire la logique conditionnelle dans une classe externe, qui ne dépend pas du framework Webforms.

Le seul code qui reste dans le code-behind comprend quelques propriétés et un appel à l’instance de Presenter correspondante, au Page_Load.

Chaque gestionnaire d’évènement (MSDN Event Handler) se comporte juste comme un objet de transferts vers l’instance du presenter.

Vous pouvez trouver une description plus détaillée du pattern MVP avec ASP.Net webforms, ici dans MSDN Magazine.

Sur CodePlex, vous trouverez ici un exemple d’une implémentation de MVP avec ASP.Net Webforms

Les différentes couches dans une application ASP.Net MVC

MVC_Archi_SoC

Comment ASP.Net MVC aide à tester notre code?

Premièrement, le code que nous aurions placé dans le code-behind (pour ceux qui n’auraient pas appliqué MVP :p) se trouve maintenant dans le controller. ASP.Net MVC nous donne la possibilité de designer notre code tout en gardant à l’esprit la « Separation of Concerns » et la testabilité.

Et cela fait la différence pour la maintenabilité de tout logiciel qui serait écrit ainsi.

Advertisements

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion / Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion / Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion / Changer )

Connexion à %s