ASP.NET

ASP.Net MVC vs Web Forms

Jan 5, 2015

igor.milosevic

 titre1

Cet article est destiné aux débutants du web, aux personnes qui souhaitent se mettre dans le développement web Microsoft.

Suite aux différentes discussions que j’ai eu avec des connaissances dans mon entourage ou chez des clients, nombreux ceux qui souhaitent se lancer dans les technologies Web et qui sont plus au moins perdus entre le Web Forms et Aspt.net MVC et qu’est-ce que ce dernier a apporté comme plus.

 

Rappel du principe :

Je commence par un petit rappel du Pattern MVC, on ne va  pas trop rentrer dans le détail car l’objectif n’est pas de vous apprendre comment le mettre en place (Vous pouvez trouver pleins de tutoriels sur internet) mais plutôt présenter ce qu’il a apporté de plus par rapport au Web Forms avec une étude comparative bien évidemment.

 

Principe du pattern MVC

Le patron de conception Modèle Vue Contrôleur introduit la séparation et la limitation des responsabilités de 3 éléments.

–  Le modèle représente les données.

–  La vue les affiche et permet à l’utilisateur de lancer des actions sur le controller.

–  Le contrôleur lorsque l’utilisateur appelle une de ses actions : interroge ou met à jour le modèle, choisit la vue et l’affiche.

mvc

Comparaison avec ASP.net WebForms

12

 

Jusqu’à la sortie du framework Microsoft ASP.net MVC en Mars 2009. Tous les sites web développés en ASP.net sans framework autre que celui du framework .net utilisent la technologie « WebForm ». Cette technologie permet au développeur de coder comme pour une application en client lourd. La page se constitue de contrôles, les valeurs de contrôles sont sauvegardées entre les postback d’une même page grâce au ViewState, un designer est fourni sous Visual Studio et la programmation est évènementielle.

En pratique, ASP.net est une technologie difficile à maitriser. D’abord l’utilisation de contrôles rend le code HTML souvent lourd et non maitrisé. Le cycle de vie de la page est complexe. Grâce au modèle de programmation évènementiel on a vite fait  générer des allers-retours serveur à tout bout de champ. La gestion du javascript est fastidieuse et obscure.

Enfin, par défaut tous les contrôles enregistrent leur état dans le ViewState ce qui l’alourdit et fait d’ASP.net une technologie qui parait poussive parfois même en réseau local, à cause du ViewState renvoyés à chaque appel du client.

ASP.net MVC propose beaucoup moins de fonctionnalités « out of the box » mais il donne accès direct à la génération du code HTML. Sa prise en main est rapide pour un développeur web venant de n’importe quelle autre technologie utilisant HTML et Javascript. Les pages sont plus légères mais il n’a pas de ViewState ce qui suppose un effort du développeur pour coder des interfaces un peu complexe nécessitants des allers-retours serveur en Ajax.

ASP.net MVC, par son découplage des contrôleurs permet de coder des tests unitaires, ce qui est très loin d’être évident voire impossible avec ASP.net WebForms.

 

ASP.Net MVC vs Web Forms :

test2

ASP.Net MVC ASP.Net Web Forms
Les views et la logique sont séparées Pas de séparation
Introduction du concept du routing en se basant sur les Urls. (Ils sont déclarés dans Global.asax pour info) Le routage se fait en se basant sur les pages elles-mêmes
Support de la syntaxe ainsi que celle du .aspx Support de la syntaxe .aspx sans Razor
La gestion des états se fait via Tempdata, ViewBag, and View Data. On utilise le View State pour stocker des informations ce qui alourdit la page
Utilisation des Partial Views Utilisation des User Controls
Possibilité d’utilisation des HTML Helpers Utilisation des contrôles serveurs
Plusieurs pages peuvent avoir le même contrôleur pour satisfaire leurs besoins. Un contrôleur peut comporter plusieurs actions Chaque page a son propre code, en d’autres termes dépendance directe. Par exemple test.aspx dépend de test.aspx.cs (code behind).
Les contrôleurs sont de « simples » classes que vous pouvez instancier sans contexte Http. Elles sont donc plus faciles à tester avec des tests unitaires par exemple. Les pages sont difficiles à instancier en dehors d’un fonctionnement normal. Ceci a pour effet de les rendre impossible à tester de manière automatique
Utilisation des layouts Master pages

 

Quelques points en commun :

– Sont fait dans  le cadre ASP.Net

– Appartiennent au même espace de nom System.Web.

– Support des langages du Framework .Net

– Envoie la réponse au client sous forme de HTML.

Conclusion:

MVC est un modèle de développement ayant fait ses preuves dans d’autres technologies de développement d’applications Web telles que la technologie J2EE.

Quant aux pages ASP .NET Web Forms, la vue (page ASPX) manque de souplesse dans le sens où elle doit souvent contenir trop de traitements ne facilitant pas le découpage en couche de l’application. Le modèle MVC permet d’agir sur la conception et le développement de l’application en assurant un découpage en couche. Mais sa contrepartie réside dans un développement plus coûteux en temps.

Le choix entre les pages WebForms et les pages MVC se fera en fonction de l’évaluation des critères suivants : nombre de pages Web dans le projet, exigence en matière d’architecture (la présence d’un architecte étant souhaitée), connaissances des développeurs en matière d’architecture, temps alloué pour développer le projet …

 

2 Commentaires

  1. Nicolas

    Article intéressent et on pourrait également ajouter un point important. En utilisant l’ASP.NET MVC il est plus simple en tant que nouvel arrivant sur un projet existant de comprendre la logique employé sur l’application du fait de son organisation conventionnel. Ce qui n’est pas le cas sur le Webform qui peut être un peu plus anarchique dans son organisation et d’ailleurs le webform demande plus d’investissement au point de vu configuration.

    D’autant plus, qu’il est plus efficace de passer par le MVC pour effectuer des tests unitaires.

    Réponse
  2. Jolan

    Autre argument et même si cela me désole personellement : Asp.Net 5 ne supporte plus les Webform.
    Asp.Net 4.6 est là pour assurer la compatibilité ascendante, mais pour combien de temps ?
    Pour un nouveau projet, si on veux qu’il soit un minimum pérenne, la question ne se pose pas trop : MVC.

    Réponse

Soumettre un commentaire

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

Découvrez nos autres articles

Aller au contenu principal