« .NET 7 s'appuie sur la base établie par .NET 6, qui comprend un ensemble unifié de bibliothèques de base, de runtime et de SDK, une expérience de développement simplifiée et une productivité accrue des développeurs. Les principaux domaines d'intérêt de .NET 7 comprennent une meilleure prise en en charge des scénarios cloud native, des outils facilitant la mise à niveau des projets existants et la simplification de l'expérience du développeur en facilitant le travail avec les conteneurs », a écrit Jeremy Likness de l'équipe .NET à propos de cette version. En gros, .NET 7 vise à faciliter le développement d'applications cloud natives et la conteneurisation.
Tout d'abord, les développeurs .NET peuvent dire "enfin" parce que l'unification est ce que .NET 5 était censé faire lorsqu'il a été lancé en novembre 2020. Cependant, des problèmes de développement exacerbés par la pandémie de la Covid-19 ont empêché que cela se produise, de sorte que tous les éléments prévus n'ont pas été intégrés à .NET 5 et ont été reportés jusqu'à ce que .NET 6 arrive en novembre 2021 en tant que version de support à long terme (LTS). Toutefois, même cette version n'a pas permis d'achever l'unification, car certains composants, tels que .NET Multi-platform App UI (.NET MAUI), ont pris du retard.
Client moderne : .NET Multi-platform App UI (.NET MAUI)
Le billet de blogue de Likness explique que .NET MAUI (anciennement appelé Xamarin Forms) représente l'avenir de l'interface utilisateur native multiplateforme avec .NET et fera partie de .NET 7. L'équipe a déjà publié l'aperçu 13 de .NET MAUI. Elle se concentre actuellement sur l'envoi du support de .NET MAUI pour .NET 6 et elle prévoit d'envoyer bientôt une version candidate (RC). Une fois la RC disponible, elle se concentra sur l'envoi de RC supplémentaires jusqu'à ce qu'elle atteigne la qualité souhaitée pour la disponibilité générale (GA).
« Une fois que .NET MAUI GA sera disponible pour .NET 6, nous l'inclurons dans .NET 7 et chercherons à améliorer l'expérience de la boucle de développement interne, à prendre en charge les derniers outils SDK .NET, à accélérer les performances des applications, à partager davantage de code, mais également à améliorer l'histoire de l'interopérabilité », a déclaré Likness. Il a également expliqué que l'accent était mis sur le développement cloud moderne, notamment les applications cloud natives, les conteneurs et les microservices.
Le cloud moderne : cloud natif et conteneurs
« Les applications "cloud natives" sont conçues dès le départ pour tirer parti des ressources modernes basées sur le Web, telles que les services de base de données et les conteneurs hébergés. L'architecture cloud native peut améliorer l'évolutivité des grandes applications en créant des sous-systèmes autonomes qui sont déployés et évoluent indépendamment des autres domaines de l'application tout en réduisant les coûts à long terme. L'architecture microservices est une approche populaire, car elle est flexible et conçue pour évoluer et s'adapter à des limites difficiles à atteindre dans une architecture monolithique », explique Likness.
.NET 7 facilitera la création d'applications cloud natives en explorant les améliorations apportées à l'expérience du développeur, telles que :
- simplifier l'installation et la configuration nécessaires pour mettre en œuvre l'authentification et l'autorisation sécurisées ;
- améliorer les performances du démarrage des applications et de leur exécution ;
En outre, pour faciliter la conteneurisation, Microsoft prévoit d'apporter des améliorations significatives au développement .NET avec des conteneurs dans .NET 7. Par exemple, l'équipe étudie la possibilité de construire des conteneurs directement via MSBuild en tant que nouvelle fonctionnalité du SDK. Elle prévoit de renforcer la télémétrie pour améliorer l'observabilité des conteneurs. Elle a également déclaré qu'elle s'efforcera de rendre ses images de conteneurs plus petites, plus rapides et plus sûres tout en explorant des modèles très demandés tels que "rootless" et "distroless".
Microsoft continuera également à travailler sur Orleans, un cadre multiplateforme .NET pour la création d'applications distribuées qui a été qualifié de ".NET distribué". L'équipe améliorera la documentation d'Orleans et le rendra plus facile à utiliser et à mettre en œuvre en améliorant l'intégration avec les services en nuage existants tels que Azure App Services et Azure Container Apps.
Moderniser : mettre à niveau les applications .NET
Selon l'équipe, depuis la sortie de .NET 6, les développeurs ont mis à niveau leurs applications pour profiter des nouveaux gains de performance, des fonctions de productivité telles que les API minimales et le rechargement à chaud, des innovations en matière d'exécution et de la disponibilité d'un écosystème mature de bibliothèques et d'outils. Dans .NET 7, l'équipe envisage de continuer à vous permettre de faire évoluer vos applications .NET existantes vers les dernières plateformes et technologies .NET.
Plus d'analyseurs, de correcteurs de code et la prise en charge de types d'applications supplémentaires dans l'assistant de mise à niveau .NET vous aideront à mettre à niveau en toute confiance une plus grande partie de votre portefeuille d'applications et à passer moins de temps sur les tâches répétitives liées à la mise à niveau.
Support de .NET 7 et les changements de rupture
Likness informe que .NET 7 est une version courante, ce qui signifie qu'elle bénéficiera d'un support et de correctifs gratuits pendant 18 mois à compter de sa date de sortie. Il est important de noter que la qualité de toutes les versions est la même. La seule différence entre les versions LTS et Current est la durée du support. .NET 7 devrait être publié en novembre et pris en charge probablement jusqu'en mai 2024. .NET 6 continuera à fonctionner pendant trois ans, ce qui signifie que le support prendra fin en novembre 2024.
Likness annonce également que .NET 7 introduit quelques changements de rupture. Six changements de rupture affectent : ASP.NET Core ; les bibliothèques Core .NET ; la sérialisation ; et Windows Forms.
Nouveautés de l'aperçu 1 de .NET 7
Les fonctionnalités suivantes sont désormais disponibles dans la version Preview 1 de .NET 7 :
Annotations nullables pour les bibliothèques Microsoft.Extensions
Dans la version .NET 7 Preview 1, les bibliothèques suivantes ont été annotées pour la nullabilité :
- Microsoft.Extensions.DependencyInjection.Abstractions ;
- Microsoft.Extensions.Logging.Abstractions ;
- Microsoft.Extensions.Primitives ;
- Microsoft.Extensions.FileSystemGlobbing ;
- Microsoft.Extensions.DependencyModel ;
- Microsoft.Extensions.Configuration.Abstractions ;
- Microsoft.Extensions.FileProviders.Abstractions ;
- Microsoft.Extensions.FileProviders.Physical ;
- Microsoft.Extensions.Configuration ;
- Microsoft.Extensions.Configuration.Binder ;
- Microsoft.Extensions.Configuration.CommandLine ;
- Microsoft.Extensions.Configuration.EnvironmentVariables ;
- Microsoft.Extensions.Configuration.FileExtensions ;
- Microsoft.Extensions.Configuration.Ini ;
- Microsoft.Extensions.Configuration.Json.
Observabilité
- ajout de la surcharge à ActivityContext.TryParse qui permet d'analyser et de créer un objet ActivityContext, y compris si le contexte d'activité a été propagé à partir d'un parent distant (problème connexe) ;
- ajout de la méthode Activity.IsStopped() pour indiquer si l'objet Activity est arrêté (problème connexe).
Des gains de performance
- des fonctions de productivité comme les API minimales et le rechargement à chaud ;
- de nouvelles innovations en matière de runtime et de langage C# ;
- la disponibilité d'un écosystème mature de bibliothèques et d'outils.
Améliorations apportées au rechargement à chaud
En ce qui concerne le rechargement à chaud, une fonctionnalité très demandée et très attendue, les améliorations de l'aperçu 1 comprennent les modifications suivantes qui sont désormais autorisées dans le rechargement à chaud C# pour Blazor WebAssembly et .NET pour iOS et Android :
- ajout de lambdas statiques aux méthodes existantes ;
- ajout de lambdas qui capturent ceci à des méthodes existantes qui ont déjà au moins un lambda qui capture ceci ;
- ajout de nouvelles méthodes d'instance statiques ou non virtuelles à des classes existantes ;
- ajout de nouveaux champs statiques à des classes existantes ;
- ajout de nouvelles classes.
Les problèmes connus du rechargement à chaud sont les suivants :
- les champs d'instance dans les classes nouvellement ajoutées ne sont pas pris en charge ;
- les méthodes et champs nouvellement ajoutés dans les classes existantes ou nouvelles ne sont pas visibles par réflexion.
Optimisations générales
- accélération des intrinsèques matériels multiplateformes supplémentaires ;
- implémentation de Narrow et Widen en utilisant SIMDAsHWIntrinsic ;
- ajout de l'aide JIT IsKnownConstant avec optimisation de String.Equals et str.StartsWith(char c) pour des constantes ;
- permettre au JIT de garder les HFA/HVA dans les registres lorsqu'ils sont passés en argument/retourner des valeurs ;
- activation du support de nint/nuint pour Vector64/128/256 ;
- ajout du support pour X86Base.Pause() et ArmBase.Yield() ;
- utilisation de la région préférée de PAL pour les indices de relocalisation JIT ;
- support des appels de queue rapides dans R2R ;
- autoriser les indirections contenues dans les tailcalls sur x64 ;
- optimisation des séquences d'appels de cellules d'indirection de manière plus générale ;
- éviter les créations locales supplémentaires pour les invocations de délégués.
Source : Microsoft
Et vous ?
Que pensez-vous des changements et des nouveautés introduits par .NET 7 Preview 1 ?
Voir aussi
Microsoft célèbre les 20 ans de .NET, son Framework de développement, les dépôts .NET seraient dans le top 30 des projets open source à plus haute vélocité sur GitHub depuis 2017
Un premier aperçu des fonctionnalités de C# 11 est disponible avec la vérification des paramètres null, et les motifs de liste
Windows 11 Pro va désormais requérir une connexion à Internet et un compte Microsoft pour amorcer le processus initial d'installation : le débat compte local contre compte Microsoft sur la table
Microsoft annonce .NET 6, version la plus rapide à ce jour avec prise en charge des puces Apple Silicon, des containers Windows isolés des processus et une amélioration des E/S de fichiers
État de .NET : C# est le principal langage utilisé par 95 % des développeurs .NET et ASP.NET Web API vient en tête des modèles d'applications utilisés dans la communauté