Compartir a través de


gRPC y AOT nativo

Por James Newton-King

gRPC admite .NET ahead-of-time (AOT) nativo en .NET 8. AOT nativo permite publicar aplicaciones de servidor y cliente gRPC como archivos ejecutables nativos pequeños y rápidos.

Advertencia

En .NET 8, no todas las características de ASP.NET Core son compatibles con AOT nativo. Para obtener más información, consulte ASP.NET Core y compatibilidad con AOT nativo.

Introducción

La compilación de AOT se produce cuando se publica la aplicación. AOT nativo está habilitado con la opción PublishAot.

  1. Agregue <PublishAot>true</PublishAot> al archivo de proyecto de la aplicación cliente o servidor de gRPC. Así se habilitarán la compilación de AOT nativo durante la publicación y el análisis dinámico del uso de código durante la compilación y la edición.

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

    AOT nativo también se puede habilitar al especificar la opción -aot con la plantilla de gRPC de ASP.NET Core:

    dotnet new grpc -aot
    
  2. Publique la aplicación para un identificador de tiempo de ejecución (RID) específico mediante dotnet publish -r <RID>.

La aplicación está disponible en el directorio de publish y contiene el código necesario para ejecutarla.

El análisis de AOT nativo abarca todo el código de la aplicación y las bibliotecas de las que esta depende. Revise las advertencias de AOT nativo y tome medidas correctivas. Es recomendable probar las aplicaciones de publicación con frecuencia para detectar problemas lo antes posible en el ciclo de vida de desarrollo.

Optimización del tamaño de publicación

Un ejecutable de AOT nativo contiene solo el código de las dependencias externas necesarias para la compatibilidad con la aplicación. El código sin usar se recorta automáticamente.

El tamaño de publicación de un servicio gRPC de ASP.NET Core se puede optimizar mediante la creación del generador de hosts con WebApplication.CreateSlimBuilder(). Este generador proporciona una lista reducida de características necesarias para ejecutar una aplicación de ASP.NET Core.

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

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

Ventajas de usar AOT nativo

Las aplicaciones publicadas con AOT nativo tienen:

  • Una superficie de disco reducida
  • Un menor tiempo de inicio
  • Una menor demanda de memoria

Para obtener más información y ejemplos de las ventajas que proporciona AOT nativo, consulte Ventajas del uso de AOT nativo con ASP.NET Core.

Recursos adicionales