gRPC e AOT nativo
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
.
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
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.