Cet article décrit les principales nouveautés de .NET Core 3.0 et 3.1.
Vous souhaitez appréhender au mieux les concepts de développement web et d’applications multiplateformes ? Notre formation ASP.NET Core en inter et intra-entreprises vous permettra de mettre en place des environnements robustes, modulables et innovants.
L’équipe Ambient IT
.NET Core 3.0 :
Sortie le 24 septembre 2019
Améliorations C# du langage 8.0
C#8.0 fait également partie de cette version, qui comprend de nouvelles fonctionnalités comme les types de référence Nullable ou encore les flux asynchrones.NET Standard 2.1
.NET Core 3,0 implémente
.NET Standard 2,1. Toutefois, il est nécessaire d’effectuer quelques réglages préliminaires au niveau du fichier projet et de mettre à jour Visual Studio vers la dernière version.
Compiler/déployer
Exécutables par défaut
.NET Core génère désormais des exécutables dépendant du runtime par défaut. Ce comportement est nouveau pour les applications qui utilisent une version .NET Core installée de façon globale. Auparavant, seuls les déploiements autonomes produisaient un exécutable.
Exécutable monofichier
La commande « dotnet publish » prend en charge l’empaquetage de votre application dans un exécutable monofichier spécifique de la plateforme. L’exécutable est auto-extractible et contient toutes les dépendances (y compris natives) nécessaires à l’exécution de votre application. Lors de la première exécution de l’application, celle-ci est extraite d’un répertoire basé sur le nom de l’application et l’identificateur de la build. Le démarrage est plus rapide quand l’application est réexécutée. L’application n’a pas besoin de s’extraire elle-même une deuxième fois, sauf si une nouvelle version a été utilisée.
Liaison d’assemblys
Le SDK .NET Core 3.0 est fourni avec un outil qui peut réduire la taille des applications en analysant le langage intermédiaire et en supprimant les assemblys inutilisés.
Compilation hiérarchisée
La compilation hiérarchisée est activée par défaut avec .NET Core 3.0. Cette fonctionnalité permet au runtime d’utiliser plus de manière adaptative le compilateur juste-à-temps (JIT) pour obtenir de meilleures performances.
Images ReadyToRun
Vous pouvez améliorer le temps de démarrage de votre application .NET Core en compilant les assemblys de votre application au format ReadyToRun (R2R). R2R est une forme de compilation ahead-of-time (AOT).
Les fichiers binaires R2R améliorent les performances de démarrage en réduisant la quantité de travail que le compilateur juste-à-temps (JIT) doit faire lorsque votre application est chargée. Les fichiers binaires contiennent du code natif similaire à ce que la compilation JIT produirait. Cependant, les fichiers binaires R2R sont plus grands, car ils contiennent à la fois le code du langage intermédiaire (IL), qui est toujours nécessaire pour certains scénarios, et la version native du même code. R2R est disponible seulement quand vous publiez une application autonome qui cible des environnements d’exécution spécifiques (RID), comme Linux x64 ou Windows x64.
Runtime/SDK
Restauration par progression du runtime de version majeure
.NET Core 3.0 introduit une fonctionnalité que vous pouvez choisir d’utiliser et qui permet de restaurer par progression votre application vers la dernière version majeure de .NET Core.
Dépendances de copies de build
La commande « dotnet build » copie maintenant les dépendances NuGet pour votre application à partir du cache NuGet vers le dossier de sortie de build. Auparavant, les dépendances étaient copiées uniquement dans le cadre de « dotnet publish ».
Nouvelles options global.JSON
Le fichier global. JSON présente de nouvelles options qui offrent plus de flexibilité lorsque vous essayez de définir la version de la kit SDK .net Core utilisée. Les nouvelles options sont les suivantes :
- allowPrerelease: indique si le programme de résolution du SDK doit prendre en compte les versions préliminaires lorsque vous sélectionnez la version du kit de développement logiciel (SDK) à utiliser.
- rollForward: indique la stratégie de restauration par progression à utiliser lors de la sélection d’une version du kit de développement logiciel (SDK), en tant que solution de secours quand une version spécifique du kit de développement logiciel est manquante ou en tant que directive pour utiliser une version plus récente.
Tailles de tas de garbage collection plus petites
La taille de tas par défaut du récupérateur de mémoire a été réduite, aboutissant à une diminution de la quantité de mémoire utilisée par .NET Core. Ce changement est plus conforme au budget d’allocation de génération 0 avec les tailles des caches des processeurs modernes.
Prise en charge de grandes pages du garbage collection
Les grandes pages sont une fonctionnalité qui permet au système d’exploitation d’établir des régions de mémoire plus grandes que la taille de page native (souvent 4 Ko) pour améliorer les performances de l’application qui demande ces grandes pages.
Windows Desktop
Ordinateurs Windows
.NET Core 3.0 prend en charge les applications de bureau Windows utilisant Windows Presentation Foundation (WPF) et Windows Forms. Le composant Bureau Windows fait partie du SDK .NET Core 3.0 Windows.
Déploiement de MSIX
MSIX est un nouveau format de package d’application Windows. Il peut être utilisé pour déployer des applications de poste de travail .NET Core 3.0 pour Windows 10.
Améliorations de Linux
SerialPort pour Linux
.NET Core 3.0 offre une prise en charge de base de System.IO.Ports.SerialPort sur Linux. Auparavant, .NET Core était uniquement pris en charge au moyen de « SerialPort » sur Windows.
Docker et limites de mémoire cgroup
L’exécution de .NET Core 3,0 sur Linux avec l’arrimeur fonctionne mieux avec les limites de mémoire cgroup. L’exécution d’un conteneur Docker avec des limites de mémoire change le comportement de .NET Core.
Support ARM64 Linux
.NET Core 3.0 prend en charge ARM64 pour Linux. Actuellement, ARM64 est principalement utilisé dans des scénarios IoT.
Sécurité
TLS 1.3 et OpenSSL 1.1.1 sous Linux
.NET Core 3.0 utilise OpenSSL 1.1.1, OpenSSL 1.1.0 ou OpenSSL 1.0.2 sur un système Linux s’ils sont disponibles. Quand OpenSSL 1.1.1 est disponible, les types System.Net.Securitty.SslStream et System.Net.Http.HttpClient utilisent TLS 1.3 (sous réserve que le client et le serveur prennent en charge TLS 1.3).
Importation/exportation d’une clé de chiffrement
.NET Core 3.0 prend en charge l’importation et l’exportation de clés publiques et privées asymétriques aux formats standard. Vous n’avez pas besoin d’utiliser un certificat X.509.
Modifications de l’API .NET Core 3,0
Plages et index
Les nouveaux types System.Index et System.Range peuvent être utilisés pour l’indexation.
Flux asynchrones
Le type IAsyncEnumerable<T> est une nouvelle version asynchrone de IEnumerable<T>. Le langage vous permet d’utiliser « await foreach » sur IAsyncEnumerable<T> pour consommer ses éléments, et « yield return » sur ceux-ci pour produire des éléments.
Outre la possibilité d’effectuer une opération « await foreach », vous pouvez également créer des itérateurs asynchrones, par exemple un itérateur qui retourne un objet IAsyncEnumerable/IAsyncEnumerator auquel vous pouvez à la fois appliquer des opérations « await » et « yield ». Pour les objets qui doivent être supprimés, vous pouvez utiliser « IAsyncDisposable», qui implémentent différents types BCL, notamment « Stream » et « Timer ».
Intrinsèques dépendant de la plateforme .NET
Des API ont été ajoutées, qui permettent d’accéder à certaines instructions de l’UC orientées performances, comme les ensembles SIMD ou les ensembles d’instructions de manipulation de bits. Ces instructions peuvent améliorer les performances dans certains scénarios de matière significative, comme le traitement efficace de données en parallèle.
Le cas échéant, les bibliothèques .NET ont commencé à utiliser ces instructions pour améliorer les performances.
API de version de .NET Core améliorées
À compter de .NET Core 3.0, les API de version fournies avec .NET Core retournent les informations souhaitées.
Prise en charge JSON intégrée rapide
La nouvelle prise en charge de JSON intégrée est la haute performance, une faible allocation et fonctionne avec du texte JSON encodé en UTF-8.
.NET Core 3.1 :
Sortie le 9 décembre 2019
Prise en charge à long terme
La fonctionnalité la plus importante de .NET Core 3,1 est qu’il s’agit d’une version de prise en charge à long terme (LTS) avec prise en charge de Microsoft au cours des trois prochaines années. Il est fortement recommandé de déplacer vos applications vers .NET Core 3,1.
Windows Forms
Windows uniquement
Les contrôles hérités étaient inclus dans Windows Forms qui n’étaient pas disponibles dans la boîte à outils du concepteur Visual Studio pendant un certain temps. Ils ont été remplacés par de nouveaux contrôles dans .NET Framework 2,0. Celles-ci ont été supprimées du kit de développement logiciel (SDK) pour .NET Core 3,1.
C++/CLI
Windows uniquement
Une prise en charge a été C++ajoutée pour la création de projets/CLI C++(également appelés projets « gérés »). Les fichiers binaires générés à partir de ces projets sont compatibles avec .NET Core 3,0 et versions ultérieures.