IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

Vous êtes nouveau sur Developpez.com ? Créez votre compte ou connectez-vous afin de pouvoir participer !

Vous devez avoir un compte Developpez.com et être connecté pour pouvoir participer aux discussions.

Vous n'avez pas encore de compte Developpez.com ? Créez-en un en quelques instants, c'est entièrement gratuit !

Si vous disposez déjà d'un compte et qu'il est bien activé, connectez-vous à l'aide du formulaire ci-dessous.

Identifiez-vous
Identifiant
Mot de passe
Mot de passe oublié ?
Créer un compte

L'inscription est gratuite et ne vous prendra que quelques instants !

Je m'inscris !

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

Le , par Stéphane le calme

142PARTAGES

4  0 
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.
  1. .NET attire les nouveaux développeurs et les étudiants : offre des expériences intentionnellement rationalisées dans les produits Visual Studio, avec des documents clairs, des modèles de code plus simples avec moins de fichiers et de concepts à apprendre et des chemins intuitifs pour déployer des artefacts dans des environnements de test et de production.
  2. .NET a une excellente expérience de développement d'applications clientes : offre une base d'applications clientes multiplateformes qui s'adresse de manière transparente aux développeurs de bureau, mobiles et Web et qui s'appuie sur et étend les types d'applications existants tels que Blazor et Xamarin.
  3. .NET est reconnu comme un framework convaincant pour la création d'applications cloud natives : offre des fonctionnalités cloud natives fondamentales principalement axées sur les performances et l'observabilité, une intégration améliorée avec les écosystèmes cloud natifs et conteneurs, et un composant cloud natif (yarp) qui démontre beaucoup de la valeur de .NET avec un cas d'utilisation critique du cloud.
  4. Entreprise et LTS : fournit des modèles plus simples et plus prévisibles pour utiliser .NET avec des applications critiques et mieux répondre aux besoins des grandes entreprises et des clients gouvernementaux.
  5. Développer l'écosystème .NET grâce à une qualité, une confiance et une assistance accrues : Établit une collaboration communautaire à long terme qui vise à élever les développeurs communautaires à un niveau similaire à celui de Microsoft, et (d'un autre côté) offre de nouvelles fonctionnalités et expériences qui en font plus facile pour les développeurs d'entreprise de dépendre des bibliothèques de projets open source communautaires qui ne sont pas nécessairement affiliés ou soutenus par une grande entreprise.
  6. Améliorer les performances de la boucle interne pour les développeurs .NET : améliore la productivité des développeurs, notamment l'amélioration des performances de build, le redémarrage à chaud et le rechargement à chaud.
  7. Améliorer le démarrage et le débit à l'aide des informations d'exécution d'exécution (PGO) : offre un nouveau modèle pour des performances améliorées basées sur des informations d'exécution qui peuvent être utilisées pour un démarrage plus rapide, un débit plus élevé et des binaires plus petits.
  8. Répondre aux attentes des développeurs : apporter des améliorations à l'ensemble du produit .NET en fonction des commentaires et pour activer de nouveaux scénarios avec les fonctionnalités existantes.

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.


Prise en charge de System.Text.Json pour IAsyncEnumerable

IAsyncEnumerable<T> est une fonctionnalité importante qui a été ajoutée avec .NET Core 3.0 et C# 8. Les nouvelles améliorations permettent la (dé)sérialisation System.Text.Json avec les objets IAsyncEnumerable<T>.

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<T> en tant que tableaux JSON, comme vous pouvez le voir dans l'exemple suivant.

Code C# : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
11
12
13
using System; 
using System.Collections.Generic; 
using System.IO; 
using System.Text.Json; 
  
static async IAsyncEnumerable<int> PrintNumbers(int n) 
{ 
    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<T>. Microsoft a ajouté la méthode JsonSerializer.DeserializeAsyncEnumerable à cet effet, comme vous pouvez le voir dans l'exemple suivant.

Code C# : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
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<int>(stream)) 
{ 
    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<T>, mais dans les limites de sa signature de méthode non-streaming. Il doit renvoyer le résultat final sous la forme d'une valeur unique, comme vous pouvez le voir dans l'exemple suivant.

Code C# : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
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<MyPoco>(stream); 
await foreach (int item in result.Data) 
{ 
    Console.WriteLine(item); 
} 
  
public class MyPoco 
{ 
    public IAsyncEnumerable<int> Data { get; set; } 
}

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

Une erreur dans cette actualité ? Signalez-nous-la !