ASP.net MVC, vers un nouveau web
Une définition du design pattern MVC
Il y a quelques années encore, la majorité des sites internet qui étaient développés présentaient peu de fonctionnalités et leur développement était plutôt centré sur le côté client (c'est à dire HTML et JavaScript). Les scripts côté serveur étaient relativement limités.
Internet est maintenant un outil de communication et de travail omniprésent. Il est désormais facile d'avoir une connexion à Internet rapide et permanente. Dans le même laps de temps, le monde informatique a migré une part non négligeable des développements vers les technologies web (Internet, Intranet..). Aujourd'hui, de nombreuses entreprises concentrent la quasi-totalité de leurs applicatifs sur ces technologie, et c'est ainsi que l'on est passé des pages web à de véritables applications en ligne.
Les projets web ont donc vu leur complexité considérablement augmenter; cependant, les technologies n'ont pas suivi le même rythme. Une partie des sites à forte audience réalisés avec PHP se sont tournés vers d'autres technologies, tel que l'ASP.Net ou le Java. Ces technologies avaient la particularité d'être réellement objet et de proposer globalement de meilleures performances en production.
En 2004, Ruby on rails (RoR) fait son apparition et va changer la façon de développer des applications en ligne. Basé sur un langage jeune, le ruby, il propose une approche nouvelle basé sur plusieurs principes :
· Une architecture basée sur le design pattern MVC : Il permet de séparer les différentes parties de son code : données, traitement, affichage (voir chapitre 2);
· La réutilisation du code, que ce soit dans le framework lui-même ou bien dans vos applications;
· L'utilisation de conventions à la place de la configuration. Pour tout ce qui est commun, RoR va définir des comportements par défaut vous permettant dans la plupart des cas d'aller plus vite;
· L'accès aux bases de données via la programmation orientée objet.
L'application de l'ensemble de ces principes combiné à la simplicité du langage Ruby permet de réduire considérablement les temps de développements : une heure et moins de 100 lignes de code suffisent à créer un blog avec gestion des commentaires à partir de zéro. Ces particularités ont contribué à son rapide succès et à son adoption pour de nombreux projets Web 2.0.
Votre projet est-il fait pour ASP.net MVC ?
C’est la première question à se poser avant de commencer un projet à l’aide d’ASP.net MVC : est-ce la meilleure solution disponible ? Bien que cet outil soit intéressant, il n’est pas adapté à tous les projets. Nous allons tout d’abord revoir quels sont les particularités du développement en Web Forms et en MVC, puis voir dans quels cas choisir l’un ou l’autre.
Comparaison entre ASP.net Web Forms et ASP.net MVC
Développement Web Forms
Les Web Forms existent depuis l’arrivée d’ASP.net. Basé sur une programmation événementielle, ils permettent de développer rapidement des applications web ; avec une approche familière pour des développeurs WinForms. Les principales caractéristiques du développement en Web Forms sont :
· Un ensemble d’outils disponibles, notamment un designer,
· L’utilisation des postbacks,
· La présence d’un viewstate,
· Une abstraction des contrôles.
Développement ASP.net MVC
Le développement ASP.net MVC utilise un paradigme déjà présent sur le web, mais nouveau pour les développeurs .net. Il présente des caractéristiques bien différentes des projets Web Forms :
· Contrôle total sur le code HTML généré,
· Vues légères sans code behind,
· Possibilité des tests des différentes couches,
· Moteurs de rendu pluggables (Services Web, médias mobiles, ….),
· Architecture RESTful,
· Pas de postback ni de viewstate.
|
Info |
L’architecture RESTful extrait de « Gadgets & Widgets » - Christopher Maneu
Le REST (Representational State Transfer) a été créé par Roy Fielding, à la base de travaux qui ont amenés la création de Internet (tel que le protocole http ou le serveur Apache). Ce n’est pas un standard, mais plutôt une philosophie de conception. Une présentation ludique de REST est disponible sur le site pompage : http://pompage.net/pompe/comment-j-ai-explique-rest-a-ma-femme/
Ici l’architecture RESTful désigne l’utilisation des verbes http pour donner un sens à la requête. |
Des caractéristiques communes
Bien qu’ils soient opposés sur de nombreux points, les projets Web Forms et ASP.net partagent des fonctionnalités en commun, qui sont dans l’ASP.net Core :
· L’authentification,
· Les master pages,
· La gestion des sessions,
· Les profils,
· La configuration,
· Le caching,
· Le routing,
· La localisation,
· La gestion de l’AJAX.
Faire son choix
Il vous faut maintenant faire votre choix entre ces deux technologies.
Vous devriez considérer un développement ASP.net Win Forms si :
· Créer le site web rapidement est plus important que conserver la maîtrise du code généré,
· Vous aimez l’abstraction fournie par les contrôles,
· Vous n’êtes pas intéressés par le développement utilisant des patterns ou vous n’êtes pas familier avec le pattern MVC.
A l’inverse, pensez ASP.net MVC si :
· Vous souhaitez conserver une maitrise totale du code généré et que vous êtes prêt à fournir un effort supplémentaire pour cela (par exemple, si une grande compatibilité avec les navigateurs est exigée),
· Vous n’aimez pas l’abstraction fournie par les contrôles,
· Vous êtes intéressés par le développement n-tiers,
· Vous souhaitez livrer un code testable,
· Vous utilisez massivement l’ajax (ASP.net MVC vous permettant de créer des services REST facilement et intelligemment).
Les avantages et inconvénients d’ASP.net MVC
En dehors de toute comparaison avec d’autres technologies de développement web, nous allons voir quels sont les avantages et les inconvénients de cette technologie.
Les avantages
Nous l’avons déjà vu, en ASP.net MVC vous conservez le contrôle du code qui est généré. Outre le fait que conserver ce contrôle peut être utile dans de nombreuses circonstances (notamment pour assurer la compatibilité avec de nombreux navigateurs), cela apporte d’autres avantages.
Dans la plupart des projets, les développeurs travaillent avec des graphistes, voir des intégrateurs web. Ces derniers n’ont pas forcément de très bonnes connaissances dans des langages et outils de développement tel qu’ASP.net. L’utilisation du MVC – et plus précisément du moteur de templates – permet aux graphistes d’intégrer le design dans les vues sans avoir accès au code métier de l’application. Pas besoin d’apprendre l’ASP.net, des connaissances de base (accès aux variables, boucles, helpers…) leur suffisent à mettre en page le site.
Autre avantage non négligeable : le temps d’exécution server side est considérablement réduit. Les explications sont nombreuses : la taille des pages étant réduite le temps nécessaire pour la traiter est moindre (temps CPU, temps de lecture disque, …), et la page elle-même est moins compliquée à traiter (le serveur n’a pas à créer des arbres d’objets complexes pour les contrôles). Cela peut avoir un impact non négligeable, quel que soit la fréquentation du site web concerné ou sur sa capacité à monter en charge.
Enfin, il est aisé d’adapter le rendu en fonction des besoins, et donc de viser plusieurs types de clients, avec des légères modifications. Vous pouvez ainsi réaliser une version desktop browser, windows mobile, iPhone et RSS du même site simplement en créant les vues appropriées. Ce dernier avantage va au-delà de la simplicité, il rend votre code plus maintenable que dans les autres types de projets. La maintenabilité du projet est également améliorée dans un projet MVC, au-delà de la vue.
Pour finir, certains outils de SEO sont désormais inclus dans ASP.net Core. Il est cependant plus aisé de les mettre en œuvre avec un projet ASP.net MVC qu’avec un projet ASP.net classique.
Les inconvénients
ASP.net MVC n’est pas une solution clés en mains. Cela peut être considéré comme un avantage, cependant, cela vous oblige à créer un certain nombre de composants vous-mêmes pour être complètement opérationnel.
Certains éléments ne sont pas optimisés out-of-box. Par exemple, si ASP.net MVC intègre par défaut l’URL Rewriting pour fournir des url propres, il y a deux inconvénients majeurs à l’implémentation actuelle : une page peut avoir deux URL (ce qui n‘est pas conseillé pour le référencement), et toute méthode publique d’un contrôleur peut être accessible par l’url spécifique (donc potentiellement quelque chose du genre http://monsite.com/factures/delete...). Il convient donc de définir, à l’intérieur de son organisation, un certain nombre de règles avant de commencer un développement.
Convertir un site existant en un site ASP.net MVC peut se révéler mission impossible. MVC propose une approche radicalement différente des sites ASP.net classiques, le coût de conversion est non seulement élevé, mais il sera également difficile de conserver les mêmes URLs.
Enfin, bien qu’il soit possible d’héberger des applications ASP.net MVC sur d’autres serveurs, IIS 7 reste le serveur sur lequel héberger ses projets.
FAQ
Quelle est la définition d’ASP.net MVC ?
Le Framework ASP.net MVC aide les développeurs web à créer des solutions web respectueuses des standards en s’appuyant sur le design pattern Modèle-Vue-Contrôleur (MVC) pour réduire les dépendances entre les différentes couches. Il permet également un contrôle total sur le code généré et permet un développement basé sur les tests (TDD).
Qu’elle est la définition de MVC ?
MVC est l’acronyme de Modèle-Vue-Contrôleur. C’est un design pattern permettant de réduire le couplage entre les différentes couches d’une application (présentation, données et business) offrant à celle-ci une meilleure robustesse et augmentant la maintenabilité. ASP.net MVC fait partie à part entière d’ASP.net Web Application framework, permettant aux développeurs web d’utiliser le design pattern MVC pour les solutions web qu’ils créent. Le design pattern MVC n’a pas été inventé par Microsoft. Il a été inventé par Xerox à la fin des années 70.
Références
ASP.net MVC est un produit jeune, cependant il y a déjà des références de sites qui utilisent ce framework :