SDK .NET : modernisation des modèles de projets C#
L'équipe a annoncé avoir mis à jour les modèles du SDK .NET afin d'utiliser les dernières fonctionnalités et modèles du langage C#. Cela faisait longtemps que l'équipe n'avait pas revu les modèles en matière de nouvelles fonctionnalités du langage. Richard Lander, Program Manager au sein de l'équipe .NET, a déclaré qu'il était temps de le faire et que l'équipe veillera à ce que les modèles utilisent des fonctionnalités nouvelles et modernes à l'avenir. Les caractéristiques de langage suivantes sont utilisées dans les nouveaux modèles :
- déclarations de haut niveau ;
- async Main ;
- utilisation globale de directives (via les valeurs par défaut du SDK) ;
- espaces de noms à l'échelle du fichier ;
- nouvelles expressions typées cibles ;
- types de référence nuls.
Il a expliqué pourquoi l'équipe a choisi d'activer certaines fonctionnalités via des modèles au lieu de les activer par défaut lorsqu'un projet cible .NET 6. « Nous acceptons de vous demander un peu de travail pour mettre à niveau vos applications vers une nouvelle version de .NET en contrepartie de l'amélioration du comportement par défaut de la plateforme. Cela nous permet d'améliorer le produit sans compliquer les fichiers de projet au fil du temps. Cependant, certaines fonctionnalités peuvent être assez perturbantes avec ce modèle, comme les types de référence nullables », a expliqué Lander.
« Nous ne voulons pas lier ces fonctionnalités à l'expérience de mise à niveau, mais nous voulons vous laisser ce choix, quand et si jamais. Les modèles sont un point de pivot beaucoup moins risqué, où nous sommes en mesure de définir ce que le nouveau "bon modèle par défaut" est pour le nouveau code sans presque autant de conséquences en aval. En activant ces fonctionnalités via les modèles de projet, nous obtenons le meilleur des deux mondes : le nouveau code démarre avec ces fonctionnalités activées, mais le code existant n'est pas impacté lors de la mise à jour », a ajouté Lander.
Plusieurs améliorations ont été apportées à l'API
Lander a annoncé que dans .NET 6 Preview 7, a intégré un certain nombre d'améliorations dans les bibliothèques de classes. À titre d'exemple, dans la nouvelle classe System.Runtime.InteropServices.NativeMemory, les développeurs de logiciels .NET trouveront des opérations de mémoire directes qui correspondent aux commandes C malloc, free, realloc et calloc. Lander a toutefois souligné dans son billet de blogue que ces accès directs à la mémoire sont destinés au code de bas niveau et aux algorithmes spéciaux, et non au développement normal d'applications.
En outre, la classe System.IO.Compression.ZipFile sauvegarde également les autorisations du système de fichiers Unix lors de la création du fichier ZIP. Le sérialiseur JSON System.Text.Json introduit dans .NET Core 3.0 a été amélioré et Lander a déclaré qu'il génère désormais des notifications dans différentes phases de travail (par exemple, OnSerializing() et OnDeserialized()). De plus, il permet de spécifier un ordre pour la sérialisation dans les propriétés : [JsonPropertyOrder(2)]. D'autres améliorations mineures de l'API sont énumérées dans l'article de blogue de Langer.
Quelques améliorations pour les projets Web
Le framework Web Blazor, relativement jeune, peut maintenant prendre les paramètres des composants directement à partir de la chaîne de requête avec l'annotation [SupplyParameterFromQuery(Name = "abc")]. Lors de la navigation avec NavigationManager.NavigateTo(), l'URL actuelle peut être remplacée au lieu de devoir placer une nouvelle URL dans l'historique du navigateur. Avec le nouveau composant <HeadContent>, les développeurs Web peuvent influencer directement l'en-tête d'une page HTML. Dans le cas d'un contrôle de liste déroulante, l'événement onchange fournit immédiatement une sélection multiple sous forme de tableau.
Le <DynamicComponent> déjà introduit dans .NET 6 Preview 1 possède une propriété d'instance. Selon Lander, la nouvelle interface de streaming IJSStreamReference permet l'échange de plus grandes quantités de données entre C# et JavaScript - des téléchargements de fichiers de plus de 2 Go sont possibles. D'autres amélioration mentionnées dans l'article de blogue se rapportent à ASP.NET. Il s'agit notamment de la prise en charge de HTTP/3 dans le serveur Web Kestrel et de la prise en charge de la journalisation du serveur Web dans le W3C Extended Log File Format via AddW3CLogging().
Les améliorations en rapport avec MAUI
L'interface utilisateur multiplateforme (MAUI) de .NET, le successeur de Xamarin Forms, a également été révisée dans l'aperçu 7 de .NET 6. En effet, jusqu'à présent, les mises en page que vous avez utilisées dans MAUI sont les mises en page de Xamarin.Forms qui savent comment dimensionner et positionner les moteurs de rendu et les nouveaux contrôles basés sur des gestionnaires. L'équipe a désormais construit des mises en page optimisées basées sur une nouvelle approche LayoutManager grâce à ses 7 années d'apprentissage des mises en page Xamarin.Forms pour optimiser la cohérence, la performance et la maintenabilité.
D'après Lander s'agit notamment des nouveaux contrôles de mise en page Grid, FlexLayout, HorizontalStackLayout et VerticalStackLayout. Les anciennes structures de mise en page de Xamarin Forms, telles que AbsoluteLayout et RelativeLayout, ont été déplacées vers l'espace de nom Microsoft.Maui.Controls.Compatibility. Tous les contrôles utilisent la mise à l'échelle automatique des polices, mais les développeurs peuvent la désactiver avec FontAutoScalingEnabled="False". Microsoft a nettoyé les API d'accessibilité dans MAUI, dont les détails peuvent être trouvés dans le billet de blogue de Lander.
Microsoft annonce la fin de la prévisualision
Selon Lander, l'aperçu 7 publié mardi représente la dernière version des aperçus de .NET 6. Par la suite, Microsoft prévoit de publier deux versions "release candidate" (RC) en septembre et octobre avant que la version stable de .NET 6 ne soit disponible en novembre.
Source : .NET 6 Preview 7
Et vous ?
Que pensez-vous des améliorations apportées à la plateforme .NET ?
Voir aussi
Microsoft annonce .NET 6 Preview 5, la version du framework pour la création des applications, apporte une amélioration des charges de travail
Microsoft annonce la disponibilité de .NET 6 Preview 4 qui apporte l'expérience Hot Reload à Visual Studio et aux outils de ligne de commande
Microsoft publie .NET 6 Preview 1 avec le support de Blazor pour les applications desktop, des améliorations de performances et quelques nouvelles fonctionnalités