Aujourd’hui, nous annonçons que la prochaine version après .NET Core 3.0 sera .NET 5. Ce sera la prochaine grande sortie de la série .NET.
À l’avenir, il n’y aura qu’un seul .NET avec lequel vous pourrez développer Windows, Linux, macOS, iOS, Android, tvOS, watchOS et WebAssembly, entre autres.
Nous introduisons de nouvelles API .NET, des fonctionnalités d’exécution et des fonctionnalités de langage dans .NET 5.
À partir du projet .NET Core, nous avons ajouté environ cinquante mille API .NET Framework à la plateforme. .NET Core 3.0 comble la plupart des lacunes restantes de .NET Framework 4.8, prenant en charge Windows Forms, WPF et Entity Framework 6. .NET 5 s’appuie sur ce travail, exploitant les meilleures fonctionnalités de .NET Core et Mono pour créer une plateforme. Vous pouvez l’utiliser pour tout le code .NET moderne.
Nous prévoyons de sortir .NET 5 en novembre 2020 et de lancer la première preview au premier semestre 2020. Il sera pris en charge dans les futures mises à jour pour Visual Studio 2019, Visual Studio pour Mac et Visual Studio Code.
.NET 5 = .NET Core vNext
.NET 5 est l’étape suivante dans .NET Core. Le projet vise à améliorer le . NET :
- Construisez un runtime .NET et un framework utilisables partout, avec un comportement d’exécution unifié et une expérience de développeur.
- En tirant pleinement parti de .NET Core, . NET Framework, Xamarin et Mono pour étendre les capacités de .NET.
- En construisant le produit à partir d’une seule base de code, les développeurs (Microsoft et la communauté) peuvent travailler ensemble et s’étendre ensemble pour améliorer tous les scénarios.
Ce nouveau projet et cette nouvelle orientation représentent un tournant majeur pour .NET. Avec .NET 5, votre code et vos fichiers de projet seront les mêmes, quel que soit le type d’application que vous développez. Chaque application a accès aux mêmes fonctionnalités d’exécution, API et langage. Inclut également des améliorations de performance de CoreFX, qui sont réalisées presque quotidiennement.
Tout ce que vous aimez dans .NET Core continuera d’exister :
- Open source et orienté communauté sur GitHub.
- Mise en œuvre multiplateforme.
- Supporter l’utilisation de fonctionnalités spécifiques à la plateforme telles que Windows Forms et WPF sur Windows ainsi que des liaisons natives pour chaque plateforme native depuis Xamarin.
- Haute performance.
- Installez côte à côte.
- Petits fichiers de projet (style SDK).
- Compatible avec les interfaces en ligne de commande (CLI).
- Intégration avec Visual Studio, Visual Studio pour Mac, et Visual Studio Code.
Il y a aussi quelques nouveautés :
- Vous aurez plus d’options pour votre expérience d’exécution (j’en parlerai plus bas).
- L’interopérabilité Java sera disponible sur toutes les plateformes.
- Plusieurs systèmes d’exploitation prendront en charge l’interopérabilité Objective-C et Swift.
- CoreFX sera étendu pour prendre en charge l’anticipation temporelle (AOT) pour .NET, une empreinte plus réduite et la prise en charge de plus de systèmes d’exploitation.
Nous sortirons .NET Core 3.0 en septembre de cette année, .NET 5 en novembre 2020, puis nous prévoyons de sortir une version majeure du fichier . NET :
Nous avons sauté la version 4 car cela aurait embrouillé les utilisateurs familiers avec le .NET Framework, qui existe depuis longtemps avec la série 4.x. De plus, nous voulons communiquer clairement que .NET 5 est l’avenir de la plateforme .NET. L’appeler .NET 5 en fait la version la plus proche que nous ayons jamais publiée.
Nous profitons également de cette occasion pour simplifier la dénomination. Nous pensons que si un seul .NET est le meilleur, nous n’avons pas besoin d’un terme clarifiateur comme « Core ». Le nom plus court est une simplification et transmet aussi le message que .NET 5 a des fonctionnalités et un comportement uniformes. Bien sûr, vous pouvez continuer à utiliser le nom « .NET Core » si vous le souhaitez.
Expérience en temps réel
Mono est la première implémentation multiplateforme de .NET. Il a commencé comme une alternative open source au .NET Framework et a évolué vers un modèle mobile avec la popularité des appareils iPhone/iOS et Android. Mono est un runtime utilisé dans Xamarin.
CoreCLR est un temps d’exécution utilisé dans le cadre de .NET Core. Il est principalement utilisé pour supporter les applications cloud, y compris le plus grand service de Microsoft, et est désormais également utilisé dans les applications de bureau Windows, IoT et apprentissage automatique.
En résumé, les runtimes .NET Core et Mono partagent de nombreuses similitudes (après tout, ce sont tous deux des runtimes .NE), mais ils possèdent aussi des fonctionnalités uniques précieuses. Il est tout à fait logique de pouvoir choisir l’expérience d’exécution que l’on souhaite. Nous rendons CoreCLR et Mono interchangeables entre eux. Nous rendrons cela aussi simple que de construire un switch pour choisir entre différentes options d’exécution.
Les sections suivantes décrivent le principal axe que nous prévoyons d’utiliser pour .NET 5. Ils offrent une perspective claire sur la manière dont nous prévoyons d’évoluer ces deux runtimes, individuellement et ensemble.
Haut débit et productivité élevée
Dès le début, .NET s’appuyait sur des compilateurs juste-à-temps (JIT) pour convertir le code des langages intermédiaires (IL) en code machine optimisé. Depuis, nous avons construit un runtime géré basé sur JIT, leader dans l’industrie, avec un très haut débit et améliorant également l’expérience développeur, rendant la programmation rapide et facile.
JIT est idéal pour des scénarios cloud et clients de longue durée. Ils sont capables de générer du code configuré pour des machines spécifiques, y compris des instructions CPU spécifiques. JIT peut également régénérer des méthodes à l’exécution, une technique qui rend JIT plus rapide, tout en offrant la possibilité de générer des versions hautement optimisées du code si elle devient fréquemment utilisée.
Nos efforts pour accélérer ASP.NET Core sur le benchmark Techpower sont un excellent exemple de la puissance du JIT et de notre investissement dans CoreCLR. Nos efforts pour renforcer .NET Core pour les conteneurs témoignent également de la capacité du runtime à s’adapter dynamiquement aux environnements contraignés.
Les outils de développement sont un autre excellent exemple de la qualité de JIT, comme les outils dotnet watch ou edit and continue. Les outils doivent souvent compiler et charger le code plusieurs fois dans un même processus sans redémarrer, et doivent le faire très rapidement.
Les développeurs utilisant .NET Core ou .NET Framework s’appuient principalement sur JIT. Par conséquent, l’expérience doit être familière.
L’expérience par défaut pour la plupart des scénarios de fonctionnement .NET 5 utilise le runtime CoreCLR basé sur JIT. Deux exceptions notables sont iOS et le client Blazor (assembleur web), car ils nécessitent tous deux une compilation native en avance (AOT).
Démarrage rapide, faible empreinte et faible utilisation de la mémoire
La majeure partie du projet Mono s’est concentrée sur le mobile et les consoles. Une caractéristique clé et un résultat du projet est le compilateur AOT .NET basé sur le projet de compilateur LLVM, leader de l’industrie. Le compilateur AOT Mono permet d’intégrer du code .NET dans un exécutable natif pouvant s’exécuter sur ordinateur, tout comme le code C++. Les applications compilées par AOT peuvent fonctionner efficacement dans des endroits plus petits et échanger le débit pour le démarrage lorsque nécessaire.
Le projet Blazor utilise déjà Mono AOT. Ce sera l’un des premiers projets à passer à .NET 5. Nous l’utilisons comme l’une des options pour prouver ce plan.
Il existe deux types de solutions AOT :
- Nécessite une solution compilée à 100 % AOT.
- La plupart du code est une solution compilée AOT, mais JIT ou des interpréteurs peuvent être utilisés pour des modèles de code qui ne sont pas compatibles avec AOT (comme les génériques). Mono AOT prend en charge les deux cas. Apple exige le premier AOT pour iOS et certaines consoles pour des raisons de sécurité. La seconde méthode est une meilleure option car elle offre les avantages de l’AOT et évite certains inconvénients.
.NET Native est notre compilateur AOT pour les applications Windows UWP, et constitue également un exemple du premier type AOT mentionné ci-dessus. Dans cette implémentation particulière, nous limitons l’API .NET et les fonctionnalités que vous pouvez utiliser. Nous avons appris de cette expérience que les solutions AOT doivent couvrir tous les aspects des API et des patterns .NET.
La compilation AOT est toujours requise sur iOS, l’assembleur web et certaines consoles. Pour les applications nécessitant un démarrage plus rapide ou une faible empreinte, nous proposerons la compilation AOT en option.
La naissance du projet
Nous avons commencé ce projet en décembre 2018 avec une équipe technique à Boston. Les responsables de conception de l’équipe .NET (Mono/Xamarin et .NET Core) et de Unity ont présenté diverses capacités techniques et orientations architecturales.
Nous faisons maintenant avancer ce projet en équipe avec un ensemble de livrables. Nous avons fait beaucoup de progrès sur plusieurs projets depuis décembre :
- Une couche minimale est définie pour définir la couche de code gérée à l’exécution <-> dans le but d’atteindre >99 % du code public CoreFX.
- MonoVM peut désormais utiliser CoreFX et ses bibliothèques de classes.
- Exécutez tous les tests CoreFX sur MonoVM avec l’implémentation CoreFX.
- Exécutez ASP.NET applications Core 3.0 avec MonoVM.
- Exécutez MonoDevelop sur CoreCLR, puis exécutez Visual Studio pour Mac.
Migrez vers un seul fichier . L’implémentation de .NET soulève des questions importantes : quel sera le cadre cible ? Les règles de compatibilité des paquets NuGet sont-elles les mêmes ? Quelles charges de travail le SDK .NET 5 devrait-il prendre en charge ? Comment puis-je coder pour une architecture spécifique ? Avons-nous toujours besoin de .NET Standard ? Nous travaillons actuellement sur ces questions et nous partagerons bientôt le document de conception pour que vous puissiez le lire et donner votre avis.
Épilogue
Le projet .NET 5 représente une nouvelle direction importante et passionnante pour .NET. Vous verrez .NET devenir plus simple, mais aussi avec une gamme plus large de fonctionnalités et d’utilités. Tous les nouveaux développements et fonctionnalités feront partie de .NET 5, y compris les nouvelles versions C#.
Nous envisageons un avenir prometteur où vous pourrez utiliser les mêmes API et langages .NET pour cibler un large éventail de types d’applications, de systèmes d’exploitation et d’architectures de silicium. Dans Visual Studio, Visual Studio pour Mac, Visual Studio Code, Azure DevOps ou la ligne de commande, il est facile de modifier la configuration de compilation pour créer différentes applications.
Lien original :La connexion hyperlientérée est visible.
|