Lors de mes formations, j’ai très souvent des questions sur les
différences entre Webforms et MVC.
Aujourd’hui, je vais vous présenter les différences les plus
importantes selon moi.
1. Cycle de vie
Webforms
Le cycle de vie de la requête est fortement basé sur la « page active
.aspx ».
Le fonctionnement est géré par des évènements sur
lesquels vous pouvez vous abonner.
MVC
Le cycle de vie est différent car il fait intervenir un contrôleur qui va
charger des modèles de données puis sélectionner la vue à utiliser pour générer
le rendu.
2. Dépendances
Webforms
Les pages sont composées d’une vue et de code-behind.
Ceci a un impact important car la vue et le contrôleurs sont fortement
dépendants.
MVC
Le contrôleur sélectionne la vue à afficher. Celle-ci ne dépend que du modèle
qu’elle va utiliser pour le rendu.
3. Testabilité
Webforms
Les pages sont difficiles à instancier en dehors d’un fonctionnement normal.
Ceci a pour effet de les rendre impossible à tester de manière automatique.
MVC
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.
4. Gestion de l’état
Webforms
Les contrôles stockent leur état dans le ViewState. Le ViewState est transmis
dans chaque page. Il a tendance à grossir très rapidement.
MVC
MVC ne maintient pas d’état des pages, ni de ViewState. Vous avez le contrôle complet de votre application.
5. Les contrôles visuels
Webforms
Webforms est fortement basé sur des composants visuels comme Winforms. Ceci
implique que le code est généré de manière automatique (sans grand contrôle).
MVC
MVC n’utilise pas d’évènement ni de code généré. Vous pouvez donc écrire du
code HTML propre comme vous le souhaitez.
6. Evènements
Webforms
L’extensibilité est gérée par les évènements.
Vous devez donc vous abonner pour modifier certains comportements.
MVC
L’extensibilité est gérée par héritage ou
des filtres. Le fonctionnement est simple à comprendre et à débugger.
7. Connaissances HTML, JS et
CSS
Webforms
Etant donné la présence de contrôles visuels, vous n’avez pas besoin d’avoir de
connaissances approfondies en HTML, JS et CSS pour créer des applications. Les
composants vont générer le code pour vous.
MVC
L’absence de contrôles visuels et de drag & drop nécessite des compétences
en développement HTML, CSS et Javascript. En contre-partie, vous pourrez écrire
du code jQuery et des requêtes Ajax très simplement.
8. Apprentissage
Webforms
Webforms est plus facile à apprendre et permet de créer rapidement
des écrans visuels grâce au drag & drop de composants. Le framework est
intéressant pour débuter avec le Web quand on connait déjà Winforms.
MVC
Le temps d’apprentissage est un peu plus long car il faut bien comprendre les
concepts du framework. Une fois que vous aurez bien compris ces concepts, vous
pourrez développer très rapidement des applications web modernes.
Quelques compléments
Postback
Le Postback est une notion utilisée par Webforms mais qui n’existe
plus dans MVC.
Le traitement des soumissions de formulaire se fait différemment.