4 points par dimohy 2023-01-08 | 5 commentaires | Partager sur WhatsApp
  • Qu’est-ce que le AOT de .NET ?
  • Déploiement Native AOT

.NET 7 peut désormais, pour les applications console, générer sur Windows, Linux et macOS du code natif de petite taille, de l’ordre de 2 Mo, sans runtime .NET, et l’exécuter sans dépendances.

5 commentaires

 
dimohy 2023-10-12

macOS, qui n’était pas pris en charge dans .NET 7, sera officiellement pris en charge dans .NET 8.
https://learn.microsoft.com/en-us/dotnet/…

 
kunggom 2023-01-08

D’après la documentation officielle de Microsoft, cette fonctionnalité présente, en plus des limitations fondamentales liées à la compilation native anticipée, quelques contraintes supplémentaires dues au fait qu’elle en est encore à un stade précoce de développement. Elle ne s’applique pas encore aux applications ASP.NET Core, nécessite une prise en charge au niveau des bibliothèques, et le débogage comme le profiling ont encore leurs limites. À cela s’ajoute le fait que seules les architectures CPU x64 et ARM64 sont prises en charge, ce qui empêche de créer des applications pour Windows 32 bits. Et un point notable est qu’avec cette fonctionnalité, il est possible de créer des bibliothèques statiques réutilisables depuis des applications non-.NET.

Lors de l’annonce de .NET 7, Microsoft l’a présenté comme une « plateforme pour les applications cloud natives ». Dans cette optique, l’entreprise a également ajouté une fonctionnalité de déploiement d’applications dans des conteneurs Docker. La prise en charge de l’AOT a sans doute elle aussi été ajoutée comme un outil destiné à optimiser la taille des images et le temps de démarrage de ces applications conteneurisées. Mais comme la prise en charge d’ASP.NET Core est encore en cours, il faudra sans doute attendre encore un peu avant que cette fonctionnalité ne révèle réellement tout son potentiel dans les applications cloud natives.

Références :

 
dimohy 2023-01-08

Merci pour votre réponse détaillée.

Les applications console ont désormais dépassé le stade de la préversion et sont entrées en phase de release stable, ce qui permet de développer de vraies applications.

Comme vous l’avez indiqué, la technologie en est encore à ses débuts, donc ASP.NET Core, WPF, Windows Forms et WinUI ne sont pas encore pris en charge.

De même, cela ne répond pas aux besoins de déploiement dans des conteneurs Docker, puisqu’ASP.NET Core n’est pas encore supporté.

Comme vous l’avez également mentionné, puisque le code est compilé en code natif, la plupart des fonctionnalités de Reflector ne peuvent pas être utilisées. Cela semble moins être une limitation liée à l’état initial de la technologie qu’une conséquence des différences de nature entre le code IL et le code natif.

À l’heure actuelle, la signification de NativeAOT semble être qu’il permet de déployer de façon remarquable, sur Windows, Linux et macOS, du code natif pur sans dépendances, du moins au niveau des applications console.

 
kunggom 2023-01-09

Ce n’est pas macOS. Comme vous pouvez le voir dans le document Microsoft Learn que j’ai lié, les plateformes actuellement prises en charge par cette fonctionnalité sont uniquement Windows et Linux. macOS sera probablement ajouté plus tard.
Le temps arrangera les choses, mais je pense qu’il y a encore beaucoup de cas où cette fonctionnalité reste difficile à utiliser en production.

 
dimohy 2023-01-09

Il est exact que macOS n’est pas encore pris en charge.