gRPC и Native AOT

Автор: Джеймс Ньютон-Кинг (James Newton-King)

gRPC поддерживает .NET native перед временем (AOT) в .NET 8. Собственный AOT позволяет публиковать клиентские и серверные приложения gRPC как небольшие, быстрые собственные исполняемые файлы.

Предупреждение

В .NET 8 не все функции ASP.NET Core совместимы с машинным AOT. Дополнительные сведения см. в разделе о совместимости ASP.NET Core и Native AOT.

Начать

Компиляция AOT происходит при публикации приложения. Собственный AOT включен с параметром PublishAot .

  1. Добавьте <PublishAot>true</PublishAot> в файл проекта клиента или серверного приложения gRPC. Это позволит выполнить компиляцию машинного AOT во время публикации и включить анализ использования динамического кода во время сборки и редактирования.

    <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 также можно включить, указав -aot параметр с помощью шаблона ASP.NET Core gRPC:

    dotnet new grpc -aot
    
  2. Опубликуйте приложение для определенного идентификатора среды выполнения (RID).dotnet publish -r <RID>

Приложение доступно в каталоге публикации и содержит весь код, необходимый для его выполнения.

Анализ собственного AOT включает весь код приложения и библиотеки, от которые приложение зависит. Просмотрите предупреждения AOT в собственном коде и выполните действия по исправлению. Рекомендуется часто тестировать приложения публикации, чтобы обнаружить проблемы в начале жизненного цикла разработки.

Оптимизация размера публикации

Собственный исполняемый файл AOT содержит только код из внешних зависимостей, необходимых для поддержки приложения. Неиспользуемый код автоматически обрезается.

Размер публикации службы ASP.NET Core gRPC можно оптимизировать, создав построитель узлов с WebApplication.CreateSlimBuilder()помощью . Этот построитель предоставляет минимальный список функций, необходимых для запуска приложения ASP.NET Core.

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

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

Преимущества использования собственного AOT

Приложения, опубликованные с помощью Собственного AOT, имеют:

  • Свернутый объем дискового пространства
  • Сокращение времени запуска
  • Сокращение спроса на память

Дополнительные сведения и примеры преимуществ, предоставляемых машинным AOT, см. в разделе "Преимущества использования собственного AOT" с ASP.NET Core.

Дополнительные ресурсы