TechDays 2012 : retour sur les nouveautés ASP.NET 4.5

Techno phare de Microsoft depuis prêt de 10 ans, ASP.NET gagne un demi-niveau de plus cette année : il se hisse en version 4.5. Cette session a été présentée par Thomas Jaskula.

L'HTML5 en cible, du JavaScript allégé, du codage encore facilité, Thomas Jaskula nous présente quelques morceaux choisis de ce qui nous attend, nous développeurs web .NET, dans quelques mois.

Les contrôles liés aux données deviennent un vrai plaisir !

Le binding des données est grandement simplifié et surtout fiabilisé.
Fini les chaînes de caractères pour lier les données aux contrôles.
La nouvelle propriété ModeleType des contrôles bindables permet de fortement typer le contrôle.
Il suffit ensuite d'accéder aux propriétés de l'objet bindé via l'objet Item :









Ce qu'on faisait avant en utilisant les événements de type OnDataBound du code-behind se fera dorénavant de manière bien plus aisé directement dans l'aspx tout en garantissant l'intégrité du code avec le modèle objet conservé et la souplesse d'écriture avec l’auto-complétion.
L'utilisation de l'objet plutôt que des chaînes de caractères pour définir le binding assure aussi d'une meilleure performance, la réflexion n'étant plus nécessaire.

Les méthodes de remontée/mise à jour des données peuvent être définies directement dans la définition du contrôle dans l'aspx :
<asp:GridView ID="categoriesGrid" runat="server"
   
AutoGenerateColumns="false"
   
AllowSorting="true" AllowPaging="true" PageSize="5"
   
ModelType="WebApplication1.Model.Category" DataKeyNames="CategoryID"
   
SelectMethod="GetCategories"
   
UpdateMethod="UpdateCategory">
Là où ça commence à devenir vraiment sympathique c'est que la méthode utilisée par le contrôle peut utiliser des attributs de paramètres pour relier ce paramètre à une autre entrée, par exemple un autre contrôle, une variable en session ou encore un paramètre passé dans l'url (querystring) :
public IQueryable<Product> GetProducts([QueryString]string keyword)
 Avec tout ça, en bonus, on obtient une gridview qui est capable de se trier/paginer toute seule, sans aucune ligne de code à ajouter. Que demande le peuple ?

Un gadget pour html encoder

Plus aucune excuse pour ne plus encoder les chaînes unsafe : une nouvelle facilité permet de binder un champs automatiquement html-encodé :
<%#:
HTML 5 pour tous !

En vrac :
  • le TextMode="Email" de la TextBox qui permet de valider un email (et autres) à la sauce HTML5, et hop du JavaScript en moins dans la page,
  • l'UpdatePanel compatible HTML5
  • le FileUpload qui gère l'envoie de plusieurs fichiers

Asynchronisme, pouvait-on y échapper ?

S'il y a un terme que l'on devait retenir cette année, c'est probablement asynchrone.
ASP.NET se devait d'avoir son lot d'asynchronisme.
Il est donc désormais possible d'implémenter des Modules et des Handlers complétement asynchrones.
Il existe aussi de nouvelles méthodes de lecture/écriture de flux asynchrones sur les objets Request et Response.


Back to the futur ?

HTML5 oblige encore une fois, la dernière présentation concernant ASP.NET n'est pas des moindres : le support des WebSockets.
Thomas Jaskula nous fait une démonstration hyper simple mais hyper efficace :
  • Un navigateur qui ouvre une connexion (une ligne de JQuery) en socket TCP (en mode connecté donc, fini le HTTP) sur le serveur (2/3 lignes de C#).
  • Le serveur broadcaste tous les messages qu'il reçoit sur tous les clients qui sont connectés en WebSocket.
Ça rappelle les bons vieux souvenirs de cours de C où on apprenait le réseau en codant un chat.
Alors évidemment la question qui est sur toutes les lèvres : comment les serveurs vont-ils tenir les charges si les développeurs se mettent à ouvrir des sockets à tout va ?
La question reste entière, c'est donc une techno qui a du potentiel, mais à surveiller...


En conclusion

A l'instar du message que Microsoft veut faire passer globalement lors de ces TechDays, ASP.NET tend résolument vers l'ouverture. C'est plutôt une bonne nouvelle et la dynamique apportée par ASP.NET MVC ne fait qu'enrichir les choses. 

Images et snippets tirés de : What's New in ASP.NET 4.5