16 juillet 2024
Chaque année, Microsoft publie une nouvelle version de cette plateforme avec un engagement de support variant de 18 à 36 mois. La première période (STS) s’applique aux versions impaires tandis que la seconde plus longue (LTS) accompagne les numéros pairs.
NET 9, le successeur de .NET 8, met l’accent sur les applications natives Cloud et les performances. Les préversions sont régulièrement publiées sur GitHub Discussions afin de favoriser l’interactivité et le partage d’expérience de toute la communauté de développeurs.
Est-il nécessaire de migrer vos projets .NET 8 existants vers cette nouvelle version ou vaut-il mieux attendre la prochaine LTS .NET 10 ?
Comme toujours, l’arrivée d’une version STS déclenche un débat dans les équipes de développement divisées en deux clans, à gauche celui des early adopters fougueux faisant face à droite aux conservateurs nourris de prudence…
Plusieurs critères doivent être analysés pour répondre correctement à cette problématique récurrente :
- Avez-vous besoin à court terme d’une nouvelle fonctionnalité apportée par .NET 9 ?
- Avez-vous les ressources nécessaires pour entamer sereinement votre trajet de migration ?
- Avez-vous la possibilité d’évaluer la migration sur un périmètre limité de votre architecture logicielle (micro-services VS monolithe) ?
Si la réponse est positive pour au moins une de ces questions, la migration vers .NET 9 peut avoir de l’intérêt.
Tour d’horizon des principales nouveautés de .NET 9
.NET est une plateforme de développement, gratuite, polyvalente et open source, qui permet de créer de nombreux types d’applications différents. Avec .NET, vous pouvez utiliser plusieurs langages, éditeurs et bibliothèques afin de créer pour le web, les appareils mobiles, les postes de travail, les jeux et IoT.
Sérialisation
La classe JsonSerializerOptions inclut de nouvelles propriétés afin de personnaliser diverses options de formatage d’un json lors de sa sérialisation.
Aussi, le nouveau singleton JsonSerializerOptions.Web propose des options par défaut pour les applications web afin d’appliquer implicitement une convention de nommage camelcase.
LINQ
De nouvelles fonctions CountBy et AggregateBy font leur apparition et permettent d’agréger l’état par clef sans devoir effectuer de regroupement intermédiaire via GroupBy.
Autre apport pratique pour les énumérables génériques, la fonction Index<TSource> (IEnumerable<TSource>) permet d’extraire rapidement l’index implicite d’une collection.
Collections
Le type PriorityQueue dans l’espace de noms System.Collections.Generic, apparu dans la version .NET 6, inclut désormais une nouvelle méthode Remove que vous pouvez utiliser pour mettre à jour la priorité d’un élément dans la file d’attente.
Chiffrement
.NET 9 ajoute plusieurs implémentations d’une nouvelle méthode de hachage ponctuel CryptographicOperations.HashData(). Celles-ci peuvent fournir de meilleures performances et réduire les allocations en mémoire.
.NET 9 fournit l’algorithme KMAC (KECCAK Message Authentication Code) qui est une fonction pseudo-aléatoire et une fonction de hachage de clé basée sur KECCAK.
Performances
.NET 9 intègre les améliorations du compilateur just-in-time 64 bits qui visent le niveau de performance des applications. Voici quelques-unes de ces améliorations :
- Meilleure génération de code pour les boucles.
- Incorporation de méthodes améliorées pour la publication Native AOT.
- Vérifications de type plus rapides.
- La vectorisation Arm64. Une nouvelle implémentation de EncodeToUtf8 tire parti de la capacité du compilateur à émettre des instructions multiregistres sur Arm64. Ce comportement permet aux programmes de traiter des blocs de données plus volumineux avec moins d’instructions.
ASP.NET Core 9.0
Les API minimales proposent désormais une prise en charge intégrée de la génération de documents OpenAPI, norme permettant aux développeurs de décrire leurs API HTTP (qui peuvent être connectées aux générateurs clients, aux générateurs de serveurs, aux outils de test, à la documentation, etc.).
L’API HybridCache permet de combler des lacunes des API IDistributedCache et IMemoryCache. Elle ajoute également de nouvelles fonctionnalités de protection pour empêcher les extractions parallèles du même travail. Elle fournit une interface de programmation simple pour l’ajout de nouveau code de mise en cache in-process et out-of-process.
.NET MAUI pour .NET 9
Un nouveau modèle de solution permet de faciliter la création d'applications clientes web .NET MAUI natives et Blazor qui partagent la même interface utilisateur. L’objectif en termes de conception est de maximiser la réutilisation de code d’applications ciblant Android, iOS, Mac, Windows et le Web.
.NET MAUI dans .NET 9 inclut également des améliorations apportées aux contrôles Editor et Entry. Ils offrent une nouvelle prise en charge des entrées de clavier logiciel pour les mots de passe, les dates et heures.
Android en version 15 bêta est désormais supporté.
XCode 15.2 est utilisé pour l’écosystème Apple : iOS 17.2 ; tvOS 17.2 ; Mac Catalyst 17.2 ; macOS 14.2.
Besoin d’aide ou de plus d'infos à ce sujet ?
Notre équipe d’experts peut vous accompagner tout au long de votre processus de migration, de l’analyse d’impact jusqu’à l’implémentation et le contrôle qualité avant déploiement.
Contactez-nous