Partager via


gRPC et AOT natif

Par James Newton-King

gRPC prend en charge .NET native avec compilation anticipée (AOT) dans .NET 8. L’AOT natif permet de publier des applications client et serveur gRPC en tant qu’exécutables natifs petits et rapides.

Avertissement

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

Get started

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

  1. Ajoutez <PublishAot>true</PublishAot> au fichier projet du client ou de l’application serveur gRPC. Cela active la compilation AOT native lors de la publication et active l’analyse dynamique de l’utilisation du code lors de la génération et de 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>
    

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

    dotnet new grpc --aot
    
  2. Publiez l’application pour un identificateur d’exécution spécifique (RID) à 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 AOT native inclut tout le code de l’application et les bibliothèques dont dépend l’application. Passez en revue les avertissements AOT natifs et prenez des mesures correctives. Il est judicieux de tester les applications de publication fréquemment pour découvrir les problèmes au début du cycle de vie du développement.

Optimiser la taille de publication

Un exécutable AOT 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 gRPC ASP.NET Core peut être optimisée en créant le générateur d’hôtes 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 d’AOT natif

Les applications publiées avec AOT natif ont :

  • Encombrement réduit du disque
  • Durée de démarrage réduite
  • Réduire la demande de mémoire

Pour plus d’informations et des exemples des avantages fournis par L’AOT natif, consultez Avantages de l’utilisation d’AOT natif avec ASP.NET Core.

Ressources supplémentaires