octobre
2008
Cette session aurait plu à deux amis à moi, Florent A. qui m’a fait découvrir ASP.Net MVC, éternel de ne pas pouvoir l’utiliser dans l’environnement professionnel dans lequel nous travaillons cause beta oblige (Banque) et Lucas B.(aka le monsieur avec une couette), grand utilisateur de StackOverflow
Speakers:
Les speakers n’étaient rien d’autres que Phil Haack (aka Haacked: http://haacked.com/), un adepte du Web depuis dix ans et maintenant sur le projet MVC, et Jeff Atwood (http://www.codinghorror.com/blog/) qui est le développeur de StackOverflow.
Pourquoi vous parle-je de StackOverflow? Tout simplement parce que c’est sûrement le plus gros projet (pas par le nombre de lignes de codes, mais par l’utilisation qui en est faite), basé entièrement sur les releases bêta d’ASP.Net MVC.
Et oui, ce n’est encore qu’une bêta 1, qui a eu 5 préviews avant. Ce projet est particulier car il est totalement opensource (voir sur codeplex ou encore ici) et surtout il a été réalisé et amélioré grâce aux retours utilisateurs.
Selon son chef de projet, ASP.Net MVC peut être décrit en deux mots : full-control et awesome! rien que ça
La questions qu’il se sont posés avant de commencer ce projet a été:
– pourquoi si peu de sites 2.0 sur le net semblent être fait en Asp.Net?
puis ils ont déviés, sur :
qu’est ce que réellement le 2.0 et qu’est ce qui est utile pour l’utilisateur final?
Il est ressorti trois gros points
– URLs compréhensibles. ex: http://www.google.com/search/mvc, serait plus compréhensible que http://www.google.com/Nl=AZ31231231&s=mvc&fr=mozilla
Cela permet aussi à l’utilisateur de modifier lui-même l’url pour lancer une autre action. Bien sûr, dans certains cas, il faudra voir la sécurité de l’application en conséquence.
– AJAX-enabled. tout appli digne de ce nom essaie au maximum d’utiliser l’AJAX pour améliorer l’expérience utilisateur.
– effets visuels (plus ou moins utiles). Les utilisateurs aiment les effets flashy et autres animations.
Il ont donc décidé de créer MVC de façon à ce que tout ceci soit géré. Ainsi est né ASP.Net MVC
Qu’est-ce qu’ASP.Net MVC?
C’est avant toute chose, un nouveau type de projet d’application Web.
C’est un choix que vous pouvez faire pour votre application en l’utilisant ou non. En effet:
– il ne remplace pas les WebForms, c’est totalement différent
– c’est une surcouche d’ASP.Net
– transmission automatique contre transmission manuelle en ASP.Net
C’est transparent
– codeplex
– retours utilisateurs/ prises en compte des demandes
Ca utilise la méthode Agile:
– 1051 tests unitaires permettant du code coverage de 94%
– ils ont des réunions journalières sur le développement et une réunion hebdomadaire sur le design
– c’est une toute petite équipe qui s’en occupe
ca utilise MVC (et oui, ASP.Net MVC utilise MVC!!! :))
– c’est un design pattern
– qui signifie Model View Controller (différent de MVP(resentation)!)
– qui sert à la séparations des contraintes (donnés, vue/interface, code métier)
Comment cela marche?
Tout est basé sur les URLs (requets). La requête est passé automatiquement au contrôleur, qui en ressort un objet du modèle, puis se modèle est retourné à une vue qui se charge de l’affichage. c’est aussi simple que cela.
Lorsque vous créez un projet MVC, vous aller alors avoir une arborescence de dossiers contenant les classes selon leur rôle. Vous pourrez aussi dès le début, créer un projet de tests unitaires, ce qui prend du temps mais vous permettra de ne pas avoir de bugs dans votre application (disons plutôt, moins de bugs)
Cette architecture n’est pas obligatoire et peut un peu changer mais pour les best-practices, il convient de la garder. D’autres best-practices comme suffixer les classes de controleur ou nommer les pages de vues, du même nom de la vue visée par le code (ca permet un mapping de route automatique).
Qu’est ce que le mapping de route?
Tout simplement, dans votre code, vous allez dire que l’url www.site.com/Search/mvc, appellera la page Search.aspx et fera une recherche en utilisant en paramètre le mot « mvc ». Vous pourriez aussi faire des routes plus complètes avec des urls du genre www.site.com/Search/mvc/windows, qui permettrait de faire une recherche utilisant les deux paramètres.
Il est vraiment difficile d’expliquer en quelques mots la puissance de MVC. Avec l’exemple live donné, vous auriez vu comment l’application est très bien architecturée, très claire, utilise très peu de lignes de code et à aucun moment vous ne personnaliser en dur les liens internes ou la génération de paramètres. Vous définissez des modèles et ca l’utilise tout seul ensuite, et parfois c’est automatique si vous avez suivi les recommandations officielles.
Côté données, vous pouvez parfaitement vous baser sur Entity Framework ou LINQ ou tout autre framework d’ORM tel NHibernate ou BllToolkit
Il utilise ensuite plein d’astuces pour faciliter le développement comme les htmlHelpers ou encore depuis peu des attributs comme les HttpVerbs qui permettent de contrôler les requêtes selon qu’elles sont en GET ou en POST par exemple
L’objectif de tout cela permet ainsi
– de tester facilement le comportement en testant les urls
– d’avoir un contrôle fin
– de séparer les contraintes, ce qui fait que
– chaque composant à une responsabilité
– permet le développement concurrent
– totalement extensible
– architecture basé sur les interfaces
A l’opposé des Webforms qui sont une technique mature, évolutive et qui ressemble aux webforms pour le design mais qui sont difficiles à tester et où l’abstraction est quasi nulle.
Pensez donc à jeter un coup d’oeil sur le site d’ASP.Net MVC et de réaliser un petit projet de test. L’essayer, c’est l’adopter!
ps: ASP.Net MVC marche parfaitement avec JQuery et dans le prochain Visual Studio, il sera intégré complètement, y compris dans l’IntelliSense