Compartilhar via


gRPC e AOT nativo

Por James Newton-King

O gRPC é compatível com ahead-of-time nativo AOT do .NET no .NET 8. O AOT nativo permite a publicação de aplicativos de servidor e cliente gRPC como executáveis nativos pequenos e rápidos.

Aviso

No .NET 8, nem todos os recursos do ASP.NET Core são compatíveis com o AOT nativo. Para obter mais informações, confira ASP.NET Core e compatibilidade com o AOT nativo.

Introdução

A compilação AOT ocorre quando o aplicativo é publicado. O AOT nativo está habilitado com a opção PublishAot .

  1. Adicione <PublishAot>true</PublishAot> ao arquivo de projeto do cliente gRPC ou do aplicativo de servidor. Isso habilitará a compilação AOT nativo durante a publicação e a análise dinâmica de uso de código durante o build e a edição.

    <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>
    

    O AOT nativo também pode ser habilitado especificando a opção -aot com o modelo gRPC do ASP.NET Core:

    dotnet new grpc -aot
    
  2. Publicar o aplicativo para um identificador de runtime (RID) específico por meio de dotnet publish -r <RID>.

O aplicativo está disponível no diretório de publicação e contém todo o código necessário para ser executado nele.

A análise AOT nativa inclui todo o código do aplicativo e as bibliotecas das quais o aplicativo depende. Leia os avisos do AOT nativo e realize as etapas corretivas. É uma boa ideia testar aplicativos de publicação com frequência para descobrir problemas no início do ciclo de vida de desenvolvimento.

Otimizar o tamanho da publicação

Um executável do AOT nativo contém apenas o código de dependências externas necessárias para dar suporte ao aplicativo. O código não utilizado é cortado automaticamente.

O tamanho de publicação de um serviço gRPC ASP.NET Core pode ser otimizado criando o construtor de host com WebApplication.CreateSlimBuilder(). Esse construtor fornece uma lista mínima de recursos necessários para executar um aplicativo ASP.NET Core.

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

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

Benefícios do uso do AOT nativo

Os aplicativos publicados com o AOT nativo têm:

  • Volume de disco minimizado
  • Tempo de inicialização reduzido
  • Reduzir a demanda de memória

Para obter mais informações e exemplos dos benefícios oferecidos pelo AOT nativo, confira Benefícios do uso do AOT nativo com o ASP.NET Core.

Recursos adicionais