Comprendre Microsoft .NET 5

L'un des thèmes clés de la stratégie de développement de Microsoft pour 2020 est peut-être mieux considéré comme le passage d'une génération à l'autre. C'est un transfert de responsabilités relativement fluide, conçu comme une unification d'anciennes et de nouvelles méthodes de travail. Mais en fin de compte, que ce soit Project Reunion, WinUI 3 ou le lancement de .NET 5, la nouvelle technologie va de l'avant, laissant l'ancien derrière.

Ce n'est pas une mauvaise chose. Nous développons de nouvelles façons de faire pour de nombreuses raisons, mais elles se combinent souvent autour d'un point clé: la nouvelle façon est meilleure. Il résout les problèmes que les anciens outils ne pouvaient pas et répond aux nouvelles questions qui n'étaient pas posées lors de la définition de la solution d'origine.

Un nouveau .NET pour un nouveau monde

Toutes ces raisons se rejoignent lors de la transition du .NET Framework vers .NET 5. Il y a une vingtaine d'années, lorsque le .NET Framework original était en cours de définition, nous avons construit des applications client-serveur monolithiques dans des environnements informatiques étroitement définis. Nous construisons maintenant un mélange de microservices distribués légers et d'applications mobiles multiplateformes, en utilisant des infrastructures en évolution rapide. C'est, malgré le cliché, un tout nouveau monde.

.NET Core a été conçu pour cette façon de travailler; multiplateforme dès le début de sa vie et destiné à prendre en charge de nouvelles applications mobiles axées sur le cloud ainsi que les modèles et pratiques de développement .NET traditionnels. Il a repris de plus en plus d'API via trois versions majeures, et lorsque les bibliothèques .NET Standard ont commencé à offrir une cible commune pour le code qui facilitait le partage de projets entre eux, le .NET Framework et Xamarin.

.NET 5: une voie pour le développement futur

Techniquement, cette nouvelle version devrait être .NET Core 4, mais Microsoft ignore un numéro de version pour éviter toute confusion avec la version actuelle du .NET Framework. Dans le même temps, passer à un numéro de version plus élevé et supprimer Core du nom indique qu'il s'agit de la prochaine étape de tout développement .NET. Deux projets conservent toujours le nom principal: ASP.NET Core 5.0 et Entity Framework Core 5, car les projets hérités avec les mêmes numéros de version existent toujours.

C'est une étape importante, marquant le moment où vous devez envisager de démarrer tous les nouveaux projets dans .NET 5 et de déplacer tout code existant à partir du .NET Framework. Bien que Microsoft ne supprime pas la prise en charge du .NET Framework, il est en mode maintenance et n'obtiendra aucune nouvelle fonctionnalité dans les futures versions ponctuelles. Toutes les nouvelles API et le développement de la communauté seront en .NET 5 (et le support à long terme de 2021 .NET 6).

Certaines technologies familières telles que Web Forms et Windows Communication Foundation sont obsolètes dans .NET 5. Si vous les utilisez toujours, il est préférable de rester sur .NET Framework 4 pour le moment et de planifier une migration vers des technologies plus récentes et prises en charge, telles que comme Razor Pages d'ASP.NET ou gRPC. Il existe des plans de support communautaire pour des frameworks alternatifs qui offriront des API similaires, mais travailler avec des approches plus récentes aidera un code à l'épreuve du futur et facilitera le travail multiplateforme.

Un aspect légèrement déroutant de .NET 5 est la façon dont il fonctionne avec les bibliothèques .NET Standard. Ils ne disparaissent pas, bien que le code .NET 5 n'ait pas besoin de les référencer directement car ils sont maintenant un sous-ensemble du moniker du framework cible .NET 5 (TFM). Ce nouveau TFM remplace l'ancien netcoreapp et les netstandard TFM, bien que si vous écrivez du code qui doit être partagé entre les frameworks, vous pouvez toujours utiliser le TFM .NET Standard 2.0 à des fins de compatibilité. Dans la plupart des cas, cependant, vous ne travaillerez probablement que dans un environnement .NET 5 afin de pouvoir vous en tenir à une net5.0déclaration TFM en toute sécurité .

Premiers pas avec .NET 5

.NET 5.0 continue d'héberger le même ensemble familier de langages, y compris les nouvelles versions de C # et F #. Ceux-ci ajoutent de nombreuses nouvelles fonctionnalités et font partie de Visual Studio 16.8 ou de l'extension C # Visual Studio Code mise à jour. Microsoft a déplacé le cadre et toutes ses implémentations, comme une grande partie de Mono, dans un seul référentiel GitHub, consolidant le développement et garantissant que toutes les versions ont les mêmes fonctionnalités sous-jacentes. Au fur et à mesure que Microsoft passe à .NET 6, il apportera d'autres implémentations de niveau supérieur, y compris Xamarin.

Le nouveau .NET reste basé sur les techniques du compilateur juste à temps développées pour le Common Language Runtime original. Le nouveau CoreCLR continue d'améliorer les performances, tout en travaillant sur plusieurs architectures de processeurs. Avec l'arrivée des processeurs basés sur M1 ARM d'Apple, le code écrit en .NET pour macOS fonctionnera en tant que binaires natifs sur le matériel Intel et ARM, de sorte que le code n'aura pas à passer par une deuxième couche d'émulation. La prise en charge d'ARM64 permettra aux applications .NET 5 de s'exécuter de manière native sur Windows sur du matériel ARM, en tirant parti des fonctionnalités des propres processeurs SQ1 et SQ2 de Microsoft.

Certains scénarios, tels que l'assemblage Web et les systèmes d'exploitation mobiles, nécessitent du code précompilé, et .NET 5 offre un compilateur à l'avance avec ses outils JIT. Le compilateur AOT est désormais disponible pour tout environnement de développement, et l'équipe Uno Platform voit déjà des augmentations de vitesse significatives pour son support Web Assembly, de l'ordre de 7 à 15 fois par rapport à l'interpréteur de langage Web Assembly précédent.

Il est prévu de rendre le compilateur AOT disponible en option pour les applications nécessitant un démarrage rapide et une empreinte mémoire réduite, par exemple sur les smartwatches à ressources limitées et le matériel IoT. Une autre option consiste à déployer un seul fichier. Tout ce qui est nécessaire pour une application (y compris le runtime) est regroupé dans un seul package, ce qui facilite le déploiement d'applications .NET dans des conteneurs ou sur des systèmes non Windows.

Le nouveau .NET ne doit pas être considéré isolément. Des développements supplémentaires concernant l'assemblage Web avec Blazor et le développement d'interface utilisateur multiplateforme avec MAUI (interface utilisateur d'application multiplateforme) sont également importants. En utilisant une combinaison de ces technologies, très peu de choses ne peuvent pas être ciblées avec .NET 5, du matériel de classe Raspberry Pi aux téléphones Android en passant par les conteneurs hébergés par Kubernetes fonctionnant sur AWS et Azure.

Sur .NET 6 en 2021

Un point important est qu'il ne s'agit que d'une étape de plus dans un processus. .NET 5 est une technologie clé pour la séparation des API Windows du système d'exploitation, la fusion de Project Reunion des API WinRT et Win32 et le passage à WinUI 3 et MAUI en tant que couches d'interface utilisateur. Une grande partie de ce travail se poursuit avec la sortie de 2021 de .NET 6, la cible de nombre de ces projets. Vous n'avez pas besoin d'attendre .NET 6 pour démarrer les migrations. Le plus tôt vous commencez, mieux c'est, vous donnant le temps de faire face à tout problème qui pourrait survenir.

Vous devriez voir .NET 5 comme une première étape de la prochaine étape du voyage .NET, une étape où vous devriez commencer à prendre tout ce code hérité et décider de ce qui est nécessaire pour faire avancer le portage et la mise à jour, et ce qui doit être complètement remplacé . À la fin de 2020, vous planifiez probablement votre calendrier de développement 2021. Dans cet esprit, .NET 5 devrait être une lentille qui vous aide à vous concentrer sur ce qui doit être fait pour que votre parc logiciel soit prêt pour un avenir beaucoup plus rapide qui n’est plus lié aux versions de Windows ou à Windows du tout.