.NET life

HUGON Jérôme
Microsoft Certified Technology Specialist Microsoft Certified Application Developer Microsoft Certified Professional

TechDays 2011 - Les nouveautés de ASP.NET MVC 3

MVC 3

Catégorie MVC 3  | Date de publication : 16/04/2011

Suite à la session que j'ai eu le plaisir d'animer lors des TechDays 2011 de Genève, vous retrouverez ici toutes les sources du projet de démonstration sous forme de solution Visual Studio 2010 ainsi que quelques explications sur celui ci.

 

La présentation PowerPoint

La présentation PowerPoint est disponible sur SlideShare:

Les nouveautés de asp.net mvc 3

 

La vidéo de la session

La vidéo de la session est disponible sur Channel 9 :

 

 

La solution de démonstration

La solution est téléchargeable ici. Je suis obligé de vous fournir quelques explications sur ces sources afin de les comprendre au mieux. L'archive contient deux dossier : Demo et NuGet.

 

NuGet

Le dossier NuGet correspond à une démonstration suivant l'article publié précédemment : Créez votre premier package NuGet. Je vous renvoie donc vers la lecture de celui ci.

 

Demo

Le dossier Demo contient la solution Visual Studio 2010 utilisé lors de la présentation. Vous pouvez immédiatemment compiler et lancer l'application sans avoir de modification ou de configuration à effectuer.

L'application est découpée suivant le déroulement de la session:

  • Le moteur de vue Razor
  • Améliorations des contrôleurs
  • Améliorations JavaScript & AJAX
  • Améliorations de la validation des données
  • L'injection de dépendances
  • Autres nouveautés
Le moteur de vue Razor

Cette section de l'application représente la première partie de la session qui à été expliquée sur le PowerPoint. Vous pouvez suivre au travers de tous ces liens les différent exemples présentés. Toutes les vues se situent dans les dossiers : 

  • ~/Views/Razor
  • ~/Views/RazorLayout
  • ~/Views/Shared

Rien de spécifique à noter au niveau du contrôleur.

 

Améliorations des contrôleurs

Cette section a été complètement expliquée au travers de démonstrations lors de la session. Vous retrouverez les filtres d'action globaux, la propriété ViewBag et les nouveaux types dérivés de ActionResult. Les points clefs de ces démonstration se situe au sein de la solution dans les fichiers :

  • ~/Global.asax.cs (méthode RegisterGlobalFilters)
  • ~/Filters/SampleAttribute.cs
  • ~/Controllers/ControllerImprovementsController.cs

Pour les vues de cette section, vous les trouverez sous :

  • ~/Views/ControllerImprovements.

 

Améliorations JavaScript & AJAX

Cette section a été présentée dans le PowerPoint. Les vues concernés ce situents sous :

  • ~/Views/JavaScriptImprovements  
  • ~/Controllers/JavaScriptImprovementsController.cs

Pour bien comprendre cette exemple, il faut annalyser le code source des deux exemples pour voir que lorsque la fonctionnalités UnobtrusiveJavaScript est désactivée, on a une portion de JavaScript dans le code source de la page.

 

Améliorations de la validation des données

Cette section concerne les exemples sur l'interface IValidatableObject, les attributs de validation et L'attributs AdditionalMetadata. Ils ont fait l'objet de démonstration lors de la session pour les deux premiers et d'une présentation PowerPoint pour le dernier. Vous pouvez retrouvez les sources concernés dans les vues situées sous :

  • ~/Views/ValidationImprovements
  •  ~/Controllers/ValidationImprovementsController.cs
  • ~/Models/SessionModel.cs
  • ~/Models/TrackModels.cs.

Vous pouvez également consulter l'article L'interface IValidatableObject.

 

L'injection de dépendances

Là encore, cette section a été détaillée lors de la présentation. Les points clefs se situent dans la solution dans les fichiers :

  • ~/Classes/IMessageService.cs
  • ~/Classes/MessageService.cs
  • ~/Classes/SampleDependencyResolver.cs
  • ~/Controllers/DependencyInjectionController.cs
  • ~/Global.asax.cs
Autres nouveautés

Cette section n'a été abordées que brievement lors de la session et pourtant derrière chacuns des points, il y a une démonstration.

 

Cache partiel des pages

Les fichiers clefs de cette démonstration sont :

  • ~/Controllers/OtherController.cs (méthodes GetDateTime et GetCacheDateTime)
  • ~/Views/Other/CurrentDateTime.cshtml
  • ~/Views/Other/Sample01.cshtml

Cette démonstration avait pour but de présenter comment mettre en oeuvre le cache partiel des pages au sein des vues. La vue principale de l'exemple (Sample01.cshtml) présente le rendu de deux actions (GetDateTime et GetCacheDateTime). La première est la date non cachée et la seconde est la date cachée. En rechargeant la vue, seule la première date est mise à jour. Ces deux actions renvoie la sous vue CurrentDateTime.cshtml qui n'affiche que la dateet heure courante.

Au niveau du contrôleur (OtherController.cs), l'action GetCacheDateTime est marquée avec l'attribut OutputCache qui permet de spécifier que le rendu de celle ci doit être mis en cache. On peut ajouter les paramètres Duration pour spécifier la durée du cache en secondes et VaryByParam avec le nom d'un paramètre permettant de spécifier qu'une version du cache sera conservé en fonction de la valeur de ce paramètre.

 

Les contrôleurs sans session

Les fichiers clefs de cette démonstration sont :

  • ~/Controllers/OtherSessionEnabledController.cs
  • ~/Controllers/OtherSessionDisabledController.cs
  • ~/Views/OtherSessionEnabled/Index.cshtml
  • ~/Views/OtherSessionDisabled/Index.cshtml

Le but de cette démonstration était de présenter l'attribut SessionState et la possibilité de l'utiliser pour désactiver la session sur un contrôleur. La variable de session empêche l'exécution en parrallèle de plusieurs actions sur un contrôleur. Cela signifie que les différentes requêtes sont traités de manière séquentielles, les unes après les autres. C'est gênant si votre vue comporte de multiples appels ajax par exemple. C'est pourquoi on peut désactiver l'état de session et pouvoir faire des appels en parallèle à notre contrôleur.

Les deux contrôleurs OtherSessionEnabledController.cs et OtherSessionDisabledController.cs effectuent exactement les mêmes instructions. Le contrôleur OtherSessionDisabledController.cs est marqué avec l'attribut SessionState qui désactive l'état de session. En chargeant les vues dans le navigateur, la vue ~/Views/OtherSessionDisabled/Index.cshtml engendre une erreur lors de la tentative d'accès à la variable de session. Cela démontre que celle ci n'est pas seulement désactivée mais qu'elle est totalement inexistante puisque sa valeur est null.

Vous pouvez naviguer entre les deux exemples pour remarquer que la session n'est pas perdue lorsque vous passez sur un contrôleur dont l'état de session est désactivé puis que vous vous revenez sur l'un dont l'état de session est actif.

 

Support JSON

Cette section a fait l'objet d'un article sur mon blog : Support des liaisons JSON. Je vous invite donc à le consulter, l'exemple étant basé sur cette démonstration.

Les fichiers clefs de cette démonstration sont :

  • ~/Controllers/OtherController.cs (méthode SendTrack) 
  • ~/Views/Other/Sample03.cshtml
Helper Twitter

Cette démonstration avait pour but de montrer la faciliter de mise en place d'une timeline Twitter après l'intégration du package Twitter.Helper via NuGet.

Les fichiers clefs de cette démonstration sont :

  • ~/Controllers/OtherController.cs (méthode Sample04)
  • ~/App_Code/TwitterGoodies.cshtml (ajouté par le package Twitter.Helper)
  • ~/Views/Other/Sample04.cshtml

La mise en oeuvre est simple puisqu'il suffit d'appeler la méthode TwitterGoodies.Profile dans la vue avec en paramètre le nom du compte twitter pour en afficher la timeline.

Ce helper Twitter fournit par Microsoft comporte de nombreuses méthodes et surcharges.

 

NuGet

Comme précisé plus haut, cette démonstration a fait l'objet d'un article sur mon blog : Créez votre premier package NuGet. Je vous renvoie donc à nouveau vers la lecture de celui ci. Les fichiers clefs de cette démonstration se trouve à la racine de l'archive sous le dossier NuGet.

 

Références

Un dernier point que j'ai oublié lors de la session est la liste des références pour approfondir MVC 3. En voici une liste non exhaustive :


Articles en relation

Créez votre premier package NuGet

Visual Studio

Catégorie Visual Studio  | Date de publication : 04/04/2011

Support des liaisons JSON

MVC 3

Catégorie MVC 3  | Date de publication : 02/04/2011

L'interface IValidatableObject

MVC 3

Catégorie MVC 3  | Date de publication : 29/03/2011