ASP.Net 4
Concernant ASP.NET 4, plusieurs choses intéressantes malgré rien de révolutionnaire :
- Un Web.config réduit à son stricte minimum (environ 8 lignes de base), tous les anciens tags ont été migrés dans le machine.config
- Un nouveau template de site web qui contient maintenant toute la partie authentification Forms déjà intégrée (MembershipProvider, RoleProvider, ProfilProvider) connecté à une base de données ainsi qu'une master page et un thème.
- Des snippets assez évolués pour chaque contrôle pour augmenter la productivité
- La gestion de plusieurs fichiers de configuration (web.config) en fonction du mode de compilation (debug, release) avec l'utilisation d'un moteur de transformation XML
- Pas mal d'optimisation au niveau rendering pour optimiser le code généré par les différents contrôles à l'aide de propriétés (RenderingMode pour l'aspNetMenu, RepeatLayout pour les RadioButtonList et CheckBoxList, et RenderOuterTable pour les FormView, LoginView, ListView, ...).
- La possibilité de gérer l'activation du ViewState de manière plus précise qu'auparavant, chaque contrôle à maintenant une propriété ViewStateMode qui peut prendre les valeurs Enabled, Disabled et Inherit (par défaut).
- La gestion des ClientID pour les contrôles grâce au ClientIDMode qui peut prendre les valeurs AutoID (auto-générés comme c'est le cas dans .NET 3.5), Static (ClientID = ID, attention aux contrôles répétés dans une GridView par exemple) et Predictable (permet de prédire le ClientID grâce à l'utilisation conjointe avec la propriété ClientIDRowSuffix des contrôles type GridView)
- Un contrôle Chart qui fait son apparition et qui gère 35 graphiques différents (dont la majeure partie en 2D et 3D). C'est un contrôle Bindable qui génère des images.
- Le QueryExtender qui permet un filtrage de données basées sur une LinqDatasource sans code behind. La génération de la requête Linq se fait de façon déclarative dans la page web directement grâce à des SearchExpression, PropertyExpression, RangeExpression, OrderByExpression, ThenByExpression ou encore CustomExpression.
- L'ajout de classes CSS automatiques pour les contrôles HiddenField et les contrôles en mode Enabled=false ce qui permet de facilement changer leur design.
- L'ajout d'une classe HttpUtility qui regroupe toutes les fonctions d'encodage et décodage HTML et JavaScript qui évite d'accéder au contexte de la page.
- L'ajout d'un tag <%: X %> équivalent à un Response.Write(HttpServerUtility.HtmlEncode(X))
- Le Search Engine Optimisation (SEO) :
- Avec notamment le routing qui est intégré aux Webforms 4.0 et qui gère la réécriture de l'action d'un formulaire. La configuration se fait dans l'event handler Application_Start du fichier Global.asax. L'accès aux "route parameters" dans les DataSource avec Page.RouteData ou avec le tag <%$ RouteValue:name %>.
- La redirection permanente pour ne pas perdre le référencement d'une page à l'aide de RedirectPermanent et RedirectToRoutePermanent.
- La gestion des balises Meta de façon dynamique à l'aide de Page.MetaKeywords et Page.MetaData.
Ajax 4
AJAX 4 a changé et ça se voit :) Microsoft a vraiment planché sur le sujet et on sent clairement la volonté de faire évoluer ce Framework.
Visual Studio 2010 intègre maintenant jQuery ainsi que le Framework AJAX et tous l'AJAX control Toolkit sous forme de fichiers debug (fichiers originaux) et release (fichiers réduits au maximum).
Le Framework AJAX qui avant se limitait à quelques fichiers JavaScript a entièrement été découpé en multiples fichiers (1 pour chaque fonctionnalité), de façon à ne pouvoir charger que ce qui est nécessaire. Le chargement des fichiers (script loading) se fait maintenant à l'aide d'un fichier (Start.js) et grâce à une ligne de commande JavaScript "Sys.require(Sys.script.WebService);" par exemple pour charger la bibliothèque relative aux Web Services. Tous les fichiers dépendants seront automatiquement chargés pour pouvoir faire fonctionner la bibliothèque demandée.
On peut également charger des fichiers à la demande, imaginons qu'une fonctionnalité dans un site à besoin d'une partie du Framework, on ne peut charger les bibliothèques correspondantes qu'au moment de l'utilisation de cette fonctionnalité ce qui est plutôt une bonne chose.
Concernant l'AJAX control Toolkit, il a entièrement été réécrit sous forme de plugin jQuery ce qui permet par exemple de charger qu'une seule instance JavaScript d'un AJAX control et de l'appliquer à plusieurs contrôles de votre page (là où avant on avait autant d'instances que de contrôles). On voit également apparaître 2 nouveaux contrôles dans ce toolkit, le contrôle SeaDragon qui permet de faire du DeepZoom et l'AsyncFileUpload qui permet d'uploader des fichiers de manière asynchrone.
Une grosse nouveauté également est la création de la librairie AJAX Client Template. Cette librairie permet de déporter toute la logique événementielle, le databinding ainsi que de datacontext côté client (tout comme Silverlight). Je ne présenterai pas ici la manipulation de cette librairie qui s'avère assez complexe, mais on a vu une application utilisant cette librairie, qui communiquait avec un WebService et qui permettait de gérer les groupes et les classements des équipes de la coupe du monde de football avec seulement 400 octets de données qui transitaient en JSON entre le client et le serveur à chaque requête ce qui est plutôt un bon point côté bande passante.