Microsoft annonce la disponibilité de .NET 6 Preview 4 qui apporte l'expérience Hot Reload
à Visual Studio et aux outils de ligne de commande
Microsoft a publié la quatrième Preview de .NET 6, successeur de .NET 5 publié en novembre dernier. .NET 6 sera lancée en novembre 2021 et représente l'aboutissement d'un effort de plusieurs années visant à fournir un framework multiplateforme à code source libre pour tout ce qui concerne .NET dans une offre globale unifiée. Dans .NET 6, l'équipe de développement se concentrera spécifiquement sur les performances des applications, l'ajout de nouveaux thèmes de contrôle et l'accélération des expériences des développeurs.
Microsoft cherche depuis quelques années maintenant à unifier et à étendre la plateforme .NET. Richard Lander, Program Manager au sein de l'équipe .NET, a expliqué que Microsoft a fait un pas vers cet objectif avec .NET Core, l'unification était censée être matérialisée avec .NET 5 avec un lancement en novembre 2020. Mais la pandémie du coronavirus ainsi que d'autres problèmes survenus au cours de l'année ont eu raison de ce calendrier.
.NET 6 va donc conduire l'éditeur à ce but en permettant de créer des applications pour desktop, le Web, le cloud, les mobiles mais aussi des jeux, des applications IdO, de l'IA et bien d'autres encore fonctionnant sous Windows, Linux, Android, iOS, Mac/Mac Catalyst, Windows Arm64, iOS/tvOS pour ne citer que ces plateformes. Pour y parvenir, .NET 6 va regrouper des composants autrefois disparates, dont Xamarin (d'où la fonctionnalité iOS/Android/macOS). « Un grand changement dans cette version est l'intégration complète d'Android et d'iOS dans le cadre des charges de travail existantes de Xamarin », a déclaré Lander.
« Cela nécessite la contrainte évidente d'intégrer un tas de code, de systèmes de construction et d'autres technologies. Il faut aussi intégrer les blogs, les documents et les échantillons. Nous travaillons avec l'équipe Xamarin depuis de nombreuses années, mais nous souhaitons la bienvenue à tous nos amis Xamarin dans le projet .NET 6. Nous invitons également les utilisateurs de Xamarin à faire partie de .NET 6 » a-t-il ajouté.
.NET 6 Preview 1 s'est attaqué à plusieurs objectifs avec une série de nouvelles fonctionnalités et de grands projets, dont Blazor Desktop et une ramification du composant ASP.NET Core de Microsoft. .NET 6 Preview 4 continue sur cette lancée.
Thèmes .NET 6
Dans un billet, Richard a expliqué :
« Nous avons commencé à planifier .NET 6 fin 2020 sur GitHub. Nous avons identifié huit thèmes à travers un large éventail de sujets, y compris les scénarios de l'industrie, le soutien et l'éducation. Les thèmes représentent de la moitié à trois quarts de nos efforts pour la sortie. Il existe de nombreux projets qui n'atteignent pas le niveau d'un thème ou qui sont significatifs mais non thématiques (comme la prise en charge des appareils Apple Silicon).
« Voici les thèmes .NET 6, chacun décrit avec un résumé d'une phrase. Ils sont répertoriés dans le même ordre qu'ils sont affichés dans themesof.net.
Expérience Hot Reload dans le débogueur Visual Studio
Avec Hot Reload, vous pouvez désormais modifier le code source géré de vos applications pendant que l'application est en cours d'exécution, sans avoir besoin de mettre manuellement en pause ou d'atteindre un point d'arrêt. Effectuez simplement une modification prise en charge pendant l'exécution de votre application et, dans la nouvelle expérience Visual Studio, utilisez le bouton « Appliquer les modifications de code » pour appliquer vos modifications.
Hot Reload fonctionne avec de nombreux types de projets existants et à venir tels que WPF, Windows Forms, les Previewaperçus .NET MAUI, les applications ASP.NET Core code-behind, les applications console, WinUI 3 (débogueur géré requis) et bien d'autres. Cette prise en charge est très large avec l'expérience de base de tout projet alimenté par les environnements d'exécution .NET Framework ou CoreCLR.
Avec Hot Reload, l'objectif de Microsoft est de rendre cette expérience disponible quelle que soit la manière dont vous préférez lancer votre application. Avec la version d'aujourd'hui, vous pouvez désormais utiliser cette expérience via l'expérience de débogage Visual Studio entièrement intégrée ou l'outil de ligne de commande dotnet watch, avec plus d'options à venir dans les versions ultérieures.
Pour commencer à tester cette fonctionnalité, installez Visual Studio 2019 version 16.11 Preview 1 et démarrez votre application avec le débogueur Visual Studio (F5). Une fois votre application en cours d'exécution, vous disposez désormais de la nouvelle option pour apporter des modifications au code et les appliquer à l'aide du nouveau bouton « Appliquer les modifications de code », comme illustré ci-dessous.
598650
Prise en charge de System.Text.Json pour IAsyncEnumerable
IAsyncEnumerable
Les exemples suivants utilisent des flux comme représentation de toute source de données asynchrone. La source peut être des fichiers sur une machine locale ou des résultats d'une requête de base de données ou d'un appel d'API de service Web.
Sérialisation en streaming
System.Text.Json prend désormais en charge la sérialisation des valeurs IAsyncEnumerable
using System;
using System.Collections.Generic;
using System.IO;
using System.Text.Json;
static async IAsyncEnumerable
{
for (int i = 0; i < n; i++) yield return i;
}
using Stream stream = Console.OpenStandardOutput();
var data = new { Data = PrintNumbers(3) };
await JsonSerializer.SerializeAsync(stream, data); // prints {"Data":[0,1,2]}
Les valeurs IAsyncEnumerable sont uniquement prises en charge à l'aide des méthodes de sérialisation asynchrones. Tenter de sérialiser à l'aide des méthodes synchrones entraînera la levée d'une NotSupportedException.
Désérialisation du streaming
La désérialisation du streaming nécessitait une nouvelle API qui renvoie IAsyncEnumerable
using System;
using System.IO;
using System.Text;
using System.Text.Json;
var stream = new MemoryStream(Encoding.UTF8.GetBytes("[0,1,2,3,4]"));
await foreach (int item in JsonSerializer.DeserializeAsyncEnumerable
{
Console.WriteLine(item);
}
Cet exemple désérialise les éléments à la demande et peut être utile lors de la consommation de flux de données particulièrement volumineux. Il ne prend en charge que la lecture à partir de tableaux JSON de niveau racine, bien que cela puisse être assoupli à l'avenir en fonction des commentaires.
La méthode DeserializeAsync existante prend nominalement en charge IAsyncEnumerable
using System;
using System.Collections.Generic;
using System.IO;
using System.Text;
using System.Text.Json;
var stream = new MemoryStream(Encoding.UTF8.GetBytes(@"{""Data"":[0,1,2,3,4]}"));
var result = await JsonSerializer.DeserializeAsync
await foreach (int item in result.Data)
{
Console.WriteLine(item);
}
public class MyPoco
{
public IAsyncEnumerable
}
Dans cet exemple, le désérialiseur aura mis en mémoire tampon tout le contenu IAsyncEnumerable avant de renvoyer l'objet désérialisé. En effet, le désérialiseur doit avoir consommé toute la valeur JSON avant de renvoyer un résultat.
Source : Microsoft
Soutenez le club developpez.com en souscrivant un abonnement pour que nous puissions continuer à vous proposer des publications.