WPF et Windows Forms
Une des principales nouveautés de cette version est la prise en charge des applications desktop. Vous pouvez maintenant créer des applications Windows Forms et WPF avec .NET Core, sous Windows. Précisons que pour les applications de bureau de .NET Framework existantes, Microsoft a également veillé à faciliter leur migration vers .NET Core.
Une application .NET Core Windows Forms
Visual Studio 2019 16.3 prend en charge la création d'applications WPF qui ciblent .NET Core. Cela inclut de nouveaux templates, un concepteur XAML (similaire au concepteur XAML existant qui cible .NET Framework) et XAML Hot Reload. Le concepteur Windows Forms est quant à lui toujours en préversion et disponible en téléchargement séparé, en tant qu'extension Visual Studio. Il sera ajouté à Visual Studio dans une version ultérieure. Il ne prend actuellement en charge que les contrôles et les fonctionnalités de bas niveau les plus couramment utilisés. Microsoft ne recommande donc pas de porter vos applications Windows Forms vers .NET Core, en particulier si vous comptez sur le concepteur. Les développeurs sont plus invités à le tester afin de partager leurs avis... Soulignons que vous pouvez également créer et générer des applications de bureau en utilisant la CLI .NET.
Une application WPF affichée dans le nouveau concepteur
En plus de Windows Forms et WPF, le package System.Windows.Forms.DataVisualization (qui inclut le contrôle permettant de générer des graphiques) est disponible pour .NET Core. Vous pouvez donc maintenant inclure ce contrôle dans vos applications .NET Core WinForms.
Support de C# 8.0
Livré avec .NET Core 3.0, C# 8.0 apporte de nombreuses améliorations. Parmi les plus notables, on peut citer les types de référence nullables. Désormais, toute variable d'un type référence est considérée comme un type référence n'acceptant pas la valeur Null. Autrement dit, par défaut, ces types seront non nullables ! Mais vous pouvez faire en sorte que le type de la variable soit nullable en ajoutant "?" au nom de type pour le déclarer comme type de référence nullable. Le but de cette fonctionnalité est d'en finir avec les exceptions de référence null très fréquentes.
C# 8.0 vient également avec les types Index et Range qui offrent une syntaxe concise pour spécifier des sous-plages dans un tableau, Span<T> ou ReadOnlySpan<T>. Un type Index peut être utilisé pour l’indexation. Vous pouvez en créer un à partir d'un intqui permet de compter depuis le début, ou avec un opérateur de préfixe ^ qui permet de compter depuis la fin.
Code C# : | Sélectionner tout |
1 2 3 4 5 | Index i1 = 3; // number 3 from beginning Index i2 = ^4; // number 4 from end int[] a = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 }; Console.WriteLine($"{a[i1]}, {a[i2]}"); // "3, 6" |
Un type Range est quant à lui composé de deux index, un pour le début et un pour la fin, et il peut être écrit avec une expression de plage (C#) x..y.
Code C# : | Sélectionner tout |
1 2 | var slice = a[i1..i2]; // { 3, 4, 5 } |
C# 8.0 inclut bien d'autres fonctionnalités comme les flux asynchrones, les déclarations using, les expressions Switch, les modèles récursifs (les modèles contenant d'autres modèles), l'implémentation par défaut des membres d'une interface, etc.
Prise en charge JSON intégrée rapide
Les utilisateurs de .NET se sont largement appuyés sur Json.NET et d’autres bibliothèques JSON populaires. Mais .NET Core 3.0 inclut une nouvelle famille d’API JSON permettant des scénarios de lecture/écriture (Utf8JsonReader et Utf8JsonWriter), l’accès aléatoire avec un modèle objet document (JsonDocument) et un sérialiseur (JsonSerializer). Les nouvelles API sont conçues pour répondre à de nombreux scénarios identiques, mais avec moins de mémoire et une exécution plus rapide. Microsoft souhaitait en effet créer une nouvelle API JSON qui tirait parti de toutes les nouvelles fonctionnalités de performance de .NET Core et qui offrait des performances appropriées. Mais il n’était pas possible de faire cela dans une base de code existante telle que Json.NET tout en maintenant la compatibilité.
Un nouveau SqlClient
SqlClient est le fournisseur de données que vous utilisez pour accéder à Microsoft SQL Server et à Azure SQL Database. Il va maintenant être publié et mis à jour en tant que package NuGet Microsoft.Data.SqlClient, et pris en charge à la fois pour les applications .NET Framework et .NET Core. En utilisant NuGet, il sera plus facile pour l’équipe SQL de fournir des mises à jour aux utilisateurs .NET Framework et .NET Core.
Support ARM et IoT
Microsoft a ajouté la prise en charge de Linux ARM64 dans cette version, après l’ajout de la prise en charge d’ARM32 pour Linux et Windows dans les versions .NET Core 2.1 et 2.2, respectivement. Raspberry Pi et les puces ARM sont désormais prises en charge pour permettre le développement IoT, y compris avec le débogueur Visual Studio distant. Vous pouvez déployer des applications qui écoutent des capteurs et afficher des messages ou des images sur un écran, le tout à l'aide des nouvelles API GPIO. ASP.NET peut être utilisé pour exposer des données en tant qu'API ou en tant que site permettant de configurer un périphérique IoT.
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 de manière plus adaptative le compilateur JIT pour obtenir de meilleures performances. Son principal avantage est d’autoriser les méthodes JIT avec un niveau de moins bonne qualité, mais plus rapide, ou avec un niveau de meilleure qualité, mais plus lent. Cela permet d’améliorer les performances d’une application quand elle passe par les différents stades de l’exécution, du démarrage à l’état stable.
Autres améliorations
On peut encore citer parmi les améliorations les plus importantes :
- le support de HTTP/2 dans HttpClient ;
- les applications .NET Core ont maintenant des exécutables par défaut : dans les versions précédentes, les applications devaient être lancées via la commande dotnet ;
- 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. Le récupérateur de mémoire a également été mis à jour afin de mieux utiliser un grand nombre de cœurs sur des machines de plus de 64 cœurs ;
- .NET Core fonctionne mieux avec Docker, le ramasse-miettes et le pool de threads ont été mis à jour pour fonctionner beaucoup mieux lorsqu'un conteneur a été configuré pour une mémoire ou un processeur limité. Les images docker .NET Core également sont plus petites, en particulier celles du SDK ;
- etc.
Il est important de mentionner que Visual Studio 2019 16.3 et Visual Studio pour Mac 8.3 ont également été publiés et que ce sont les versions requises pour utiliser .NET Core 3.0 avec Visual Studio.
Télécharger .NET Core 3.0 pour Windows, macOS ou Linux
Source : Microsoft
Voir aussi :
Bing.com tourne désormais sur .NET Core 2.1, un choix technique qui lui a permis de gagner en performance, mais aussi en agilité
Microsoft annonce la diffusion de mises à jour cumulatives pour .NET Framework à compter de la mise à jour Windows 10 octobre 2018
PowerShell Core 6.1 est disponible : support de .NET Core 2.1, compatibilité avec les modules Windows, cmdlets et rendu Markdown et plus
Visual Studio 2019 version 16.2 Preview 2 est disponible en téléchargement, et apporte des améliorations à la productivité .NET
Avec .NET 5, Microsoft voudrait produire un environnement d'exécution .NET unique et une infrastructure utilisable partout