Partager via


gRPC et AOT natif

Par James Newton-King

gRPC prend en charge .NET Native ahead-of-time (AOT) dans .NET 8. Native AOT permet de publier des applications clientes et serveurs gRPC sous forme de petits exécutables natifs rapides.

Avertissement

Dans .NET 8, toutes les fonctionnalités ASP.NET Core ne sont pas compatibles avec l’AOA natif. Pour plus d’informations, consultez Compatibilité ASP.NET Core et Native AOT.

Bien démarrer

La compilation AOT se produit lorsque l’application est publiée. Native AOT est activé avec l’option PublishAot.

  1. Ajoutez <PublishAot>true</PublishAot> au fichier projet de l’application cliente ou serveur gRPC. Cela permet la compilation Native AOT pendant la publication et l’analyse dynamique de l’utilisation du code pendant la génération et la modification.

    <Project Sdk="Microsoft.NET.Sdk.Web">
    
      <PropertyGroup>
        <TargetFramework>net8.0</TargetFramework>
        <PublishAot>true</PublishAot>
      </PropertyGroup>
    
      <ItemGroup>
        <PackageReference Include="Grpc.AspNetCore" Version="2.51.0" />
        <PackageReference Include="Google.Protobuf" Version="3.22.0" />
      </ItemGroup>
    
    </Project>
    

    Native AOT peut également être activé en spécifiant l’option -aot avec le modèle ASP.NET Core gRPC :

    dotnet new grpc -aot
    
  2. Publiez l’application pour un identificateur de runtime (RID) spécifique à l’aide de dotnet publish -r <RID>.

L’application est disponible dans le répertoire de publication et contient tout le code nécessaire pour l’exécuter.

L’analyse Native AOT inclut tout le code de l’application et les bibliothèques dont dépend l’application. Passez en revue les avertissements d’AOA natif et prenez des mesures correctives. Il est judicieux de tester fréquemment les applications de publication pour détecter les problèmes au début du cycle de vie du développement.

Optimiser la taille de publication

Un exécutable AOA natif contient uniquement le code des dépendances externes requises pour prendre en charge l’application. Le code inutilisé est automatiquement supprimé.

La taille de publication d’un service ASP.NET Core gRPC peut être optimisée en créant le générateur d’hôte avec WebApplication.CreateSlimBuilder(). Ce générateur fournit une liste minimale des fonctionnalités requises pour exécuter une application ASP.NET Core.

var builder = WebApplication.CreateSlimBuilder(args);
builder.Services.AddGrpc();

var app = builder.Build();
app.MapGrpcService<GreeterService>();
app.Run();

Avantages de l’utilisation de AOA natif

Les applications publiées avec AOA natif ont les caractéristiques suivantes :

  • Empreinte disque réduite
  • Temps de démarrage réduit
  • Réduire la sollicitation de mémoire

Pour plus d’informations et des exemples des avantages qu’offre AOA natif, consultez Avantages de l’utilisation d’AOA natif avec ASP.NET Core.

Ressources supplémentaires