Le Web évolue à une vitesse folle et des besoins nouveaux apparaissent chaque jours. Pour mieux comprendre les avantages et inconvénients d'utiliser ASP.NET MVC, il est utile de se pencher sur l'histoire des technologies Web chez Microsoft. A chaque nouvelle technologie, la plate-forme Web gagne en puissance et possibilités, mais malheureusement en compléxité également.
Années 90
Tout a commencé avec les Common Gateway Interface (CGI). Le principe des CGI c'est quoi ? Plutôt que d'envoyer le contenu d'un fichier requêté, les serveurs HTTP utilisant une inferface CGI exécutent un programme puis retournent le contenu généré, comme s'il s'agissait d'un contenu de fichier (vous avez deviné, ça ressemble un peu à un HttpHandler en ASP.NET). Les interfaces CGI permettent de passer des paramètres au programme sur le serveur, de façon à ce qu'il adapte le contenu généré en fonction de la demande.
Cette technologie avait ses avantages à l'époque : elle était simple et flexible. Mais surtout c'était un choix obligé pour les développeurs, CGI n'avait pas vraiment d'alternative. Cependant elle avait un très gros défaut : s'exécutant en dehors du serveur web elle était très consommatrice en ressources. Chaque requête équivalait à une nouvelle instance du programme côté serveur. Bonjour la charge à supporter !
Plus tard est apparu Microsoft Internet Database Connector (IDC) qui permettait d'éxecuter des requêtes SQL et d'utiliser des templates afin de formater le résultat à retourner au navigateur Web. L'avantage comparé aux CGI est que IDC s'executait au sein du serveur Web et ne consommait pas excessivement de ressources. Cependant... à part renvoyer des résultats formatés de requêtes SQL, il ne faisait pas grand chose !
L'année 1996 voit l'arrivée de deux nouvelles technologies qui vont changer la donne : la toute première version d'Internet Information Server (IIS) et les Active Server Pages (ASP), l'ancêtre de l'ASP.NET. C'est à partir d'ici que le basculement du contenu web statique vers le dynamique se fait sentir. ASP est la technologie Web de Microsoft pour répondre à tous les besoins du Web (de l'époque...). Il s'agit d'un environnement de développement permettant de représenter sous forme d'objets les interactions client/serveur ainsi que les connexions aux bases de données. On voit apparaître par exemple les objets Application, Request, Response, Server, Session, mais aussi ObjectContext pour gérer les transactions. ASP, au contraire des technologies précédentes, s'inscrit dans une architecture 3-tiers. Le serveur IIS supportant les Active Server Pages peut servir d'intermédiaire entre le navigateur du client et une base de données en permettant un accès transparent à celle-ci grâce à la technologie ADO.
Bref, ASP fut la techno Web de la fin des années 90 et connu un certain succès. Cependant, au même titre que toute techno, elle a ses inconvénients. D'une part, c'est un langage interprété et non compilé. D'autre part, et tous ceux qui ont eu le malheur de dévepelopper en ASP pourront en témoigner, un projet ASP devient vite le foutoir avec du code spaghetti à gogo !
Mais pendant ce temps là, Microsoft concevait une révolution : le Framework .NET ! Pour ASP.NET ce sont surtout deux hommes qui en sont l'origine : Mark Anders de l'équipe IIS et notre très célèbre Scott Guthrie qui développa tout seul un premier prototype.
Années 2000 à 2005
Inspiré du meilleur de Java, COM et du Web, la technologie ASP.NET Web Forms 1.0 est sortie en début d'année 2002 et a été suivie un peu plus d'un an plus tard par la version 1.1. Cela correspond aussi à l'arrivée de Visual Studio .NET et Visual Studio 2003. Très vite, cette technologie est dévenue le standard pour le développement d'applications Web avec les technologies Microsoft.
ASP.NET possède des avantages indéniables par rapport à ASP (sans se focaliser sur les avantages du Framework .NET et de Visual Studio) : c'est un langage compilé et non pas interprété, il permet de mettre en place une vaste infrastructure, il encourage la programmation orienté objet. Il permet également aux éléments de l'UI d'avoir des états et de les conserver au fil des aller-retour serveur (vous avez dit ViewState ?).
Mais il faut surtout garder à l'esprit qu'ASP.NET Web Forms avait pour objectif de simplifier la transition des développeurs Desktop (WinForms entre autre) au développement Web. Cet objectif a eu un gros impact sur la façon dont Microsoft a conçu ASP.NET, et celui-ci ne fut pas forcément positif pour la suite. Je pense notamment aux contrôles serveur avec leur utilisation du ViewState, au mode évènementiel GUI, au manque de conformité aux standards du Web, grosse consommation de bande passante, peu de contrôle sur le rendu HTML, peu facilement testable, etc.
En 2005 débarque la version 2.0 d'ASP.NET avec de nombreuses améliorations. D'une part il se base sur le Framework .NET 2.0 (apparition des collections génériques, des classes partielles, des nullables, des itérateurs, etc.) et d'autre part il apporte ces nouveautés :
- Les Master pages
- Les Themes
- Les contrôles Navigation
- La gestion de la sécurité et les Membership Provider
- Les contrôles Data source
- Les WebParts
- Les Profiles
En 2006 le Framework 3.0 pointe le bout de son nez, suivi rapidement de la version 3.5 en 2007. La nouvelle version du framework apporte entre autre les technologies WPF, WCF, WF et Linq. Côté ASP.NET les nouveautés ne sont pas nombreuses (on se base toujours sur le core 2.0). On peut retenir :
- Les nouveaux contrôles de données ListView et DataPager
- L'incluse d'ASP.NET AJAX dans ASP.NET
- Le support via WCF du format JSON et RSS
S'ensuie en 2008 le Service Pack 1 avec l'apparition d'ASP.NET Dynamic Data, le support de l'historique de navigation pour ASP.NET AJAX, la possibilité de combiner plusieurs fichiers Javascript en un seul. Il ne s'agit là que de petites nouveautés.
2010 voit l'arrivée de la version 4.0. Là encore pas de refonte en profondeur mais de très nombreuses améliorations bien sympathiques facilitant la vie des développeurs, la performance des applications, et également un réel effort de la part de Microsoft pour se rapprocher des standards. A noter également une petite révolution pour le déploiement des applications (voir cette série d'articles). Pour résumer les principaux changements :
- Modification des modèles de projet
- Gestion personnalisée du ClientId
- Support natif du routage
- Amélioration de la granularité du ViewState
- Améliorations des contrôles standards
- Contrôles templates
- Gestion des déploiements Web
- Integration du contrôle ASP.NET Chart
- Gestion des balises Meta
- Simplification du Web.Config
- Effectuer un filtre grâce au contrôle QueryExtender
- Améliorations du Session State
- Redirections permanentes
- Encodage HTML automatique du code en ligne
Enfin, pas plus tard que le mois dernier, la Developer Preview d'ASP.NET 4.5 est apparue. Vous pouvez consulter les deux billets à ce sujet :
- Présentation d'ASP.NET 4.5 Developer Preview
- Nouveautés d'ASP.NET 4.5 Web Forms
Et MVC dans tout ça ?
En parallèle à ASP.NET Web Forms, qui a reçu de améliorations constantes depuis bientôt 10 ans, Microsoft a travaillé sur une autre branche de l'ASP.NET : MVC. Pour résumer la chronologie :
- Décembre 2007 : première présentation d'ASP.NET MVC
- Mars 2009 : release de la version 1
- Mars 2010 : release de la version 2
- Janvier 2011 : release de la version 3
- Septembre 2011 : présentation de la version 4
Alors MVC c'est quoi ? Pourquoi Microsoft a-t-il décidé de créer cette techno parallèle ? Quels sont les différences entre Web Forms et MVC ? C'est ce que nous verrons dans la partie 3 :-)