L’équipe de développement de .NET, le Framework de développement de Microsoft pour les applications d'entreprises, a présenté le 12 octobre son habituelle série mensuelle d'informations sur .NET. « .NET 6 Release Candidate 2 (RC2) est maintenant disponible. .NET 6 RC2 est très proche de la version finale de .NET 6 que nous prévoyons de publier en novembre de cette année, à temps pour la conférence .NET 2021. Il s'agit également d'une version "go live", vous êtes donc invités à l'utiliser en production. La version RC2 de .NET 6 contient principalement des améliorations de la qualité et des corrections de bogues, bien qu'elle contienne également quelques nouvelles fonctionnalités », a déclaré Microsoft dans un billet de blog.Microsoft .NET est le nom donné à un ensemble de produits et de technologies informatiques de l'entreprise Microsoft pour rendre des applications facilement portables sur Internet. Le mois dernier, Microsoft a annoncé la sortie de la première release candidate de .NET 6, disponible pour Linux, macOS et Windows. Cette version apportait des solutions aux problèmes fonctionnels et les régressions des fonctionnalités. .NET 6 RC1 avait été testé et pris en charge par la Preview 4 de Visual Studio 2022 qui permet de tirer parti des outils Visual Studio développés pour .NET 6, tels que le développement dans .NET MAUI, Hot Reload pour les applications C#, le nouveau Live Preview pour WebForms, et d'autres améliorations de performances dans l’expérience avec l’IDE.
La version RC2 de .NET 6 contient principalement des améliorations de la qualité et des corrections de bogues sur ASP.NET Core, bien qu'elle contienne également quelques nouvelles fonctionnalités. Une nouvelle fonctionnalité clé est arrivée dans le cadre Blazor pour les applications Web. Rappelons qu'ASP.NET Core est un Framework Web gratuit et open-source, développé par Microsoft. Il est plus performant qu'ASP.NET. C'est un Framework modulaire qui fonctionne à la fois avec le Framework .NET, sous Windows et .NET Core en multiplateforme.
Dépendances natives pour les applications Blazor WebAssembly
Les applications Blazor WebAssembly dans .NET 6 peuvent maintenant utiliser des dépendances natives qui ont été construites pour fonctionner avec WebAssembly. Le responsable principal du programme, Daniel Roth, a décrit les dépendances natives pour les applications Blazor WebAssembly (Wasm), ce qui signifie que « tout code natif portable peut être utilisé comme dépendance native. » Cela signifie à son tour que le code C, par exemple, peut être appelé à partir du code C# exécuté dans le navigateur. Le code C# et le code C seront compilés en Wasm, donc techniquement, cela peut sembler une petite étape, mais c'est joliment emballé pour fonctionner de la même manière que l'interopérabilité du code natif pour C# sur le serveur ou le bureau.
La nouvelle fonctionnalité dépend d'un composant de Visual Studio appelé .NET WebAssembly build tools, qui installe un tas de choses, y compris la chaîne d'outils du compilateur Emscripten pour C++ et C. La principale limitation est que le code doit être portable, bien que d'autres codes (tels que ceux qui utilisent des variables int 64-bit) peuvent s'exécuter lentement puisque JavaScript n'a pas de type int 64-bit natif. Roth a cité en exemple la bibliothèque graphique 2D SkiaSharp, qui englobe la bibliothèque graphique native Skia et offre une prise en charge préalable de Blazor WebAssembly.
Il est possible de lier statiquement les dépendances natives au moteur d'exécution .NET WebAssembly à l'aide des outils de construction .NET WebAssembly, les mêmes outils qui sont utilisés dans .NET 6 pour compiler à l'avance (AOT) l’application Blazor vers WebAssembly ou pour lier à nouveau le moteur d'exécution afin de supprimer les fonctionnalités inutilisées.
Pour installer les outils de compilation .NET WebAssembly, il faut sélectionner le composant facultatif dans le programme d'installation de Visual Studio ou exécutez dotnet workload install wasm-tools à partir d'une invite de commande élevée. Les outils de construction .NET WebAssembly sont basés sur Emscripten, une chaîne d'outils de compilation pour la plateforme Web.
L’ajout des éléments NativeFileReference dans un fichier de projet permet d’ajouter des dépendances natives aux applications Blazor WebAssembly. Lorsque le projet est construit, chaque NativeFileReference est transmise à Emscripten par les outils de construction de .NET WebAssembly afin qu'elle soit compilée et liée au runtime.
En général, tout code natif portable peut être utilisé comme dépendance native avec Blazor WebAssembly. Il est possible d’ajouter des dépendances natives au code C/C++ ou au code précédemment compilé à l'aide d'Emscripten : fichiers objets (.o), fichiers d'archive (.a), bitcode (.bc), ou modules WebAssembly autonomes (.wasm). Les dépendances préconstruites doivent généralement être construites en utilisant la même version d'Emscripten que celle utilisée pour construire le moteur d'exécution .NET WebAssembly (actuellement 2.0.23).
Utilisation du code natif d'une application Blazor WebAssembly
Pour ajouter une simple fonction C native à une application Blazor WebAssembly, il faut :
- Créez un nouveau projet Blazor WebAssembly ;
- Ajoutez un fichier Test.c au projet;
- Ajoutez une fonction C dans Test.c pour calculer des factorielles.
| Code : | Sélectionner tout |
1 2 3 4 5 | int fact(int n)
{
if (n == 0) return 1;
return n * fact(n - 1);
} |
Ajoutez une NativeFileReference pour Test.c dans le fichier de projet :
| Code : | Sélectionner tout |
1 2 3 | <ItemGroup> <NativeFileReference Include="Test.c" /> </ItemGroup> |
Dans Pages/Index.razor, ajoutez une DllImport [/I]pour la fonction fact dans la bibliothèque Test générée :
| Code : | Sélectionner tout |
1 2 3 4 5 6 7 8 | @using System.Runtime.InteropServices
...
@code {
[DllImport("Test")]
static extern int fact(int n);
} |
Appelez la méthode fact depuis votre code .NET.
| Code : | Sélectionner tout |
<p>@fact(3)</p>
Utilisation de bibliothèques...
La fin de cet article est réservée aux abonnés. Soutenez le Club Developpez.com en prenant un abonnement pour que nous puissions continuer à vous proposer des publications.