Share via


gRPC 和原生 AOT

作者:James Newton-King

gRPC 在 .NET 8 中支援 .NET 原生預先 (AOT)。 原生 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>
    

    您也可以使用 ASP.NET Core gRPC 範本來指定 -aot 選項以啟用原生 AOT:

    dotnet new grpc -aot
    
  2. 使用 dotnet publish -r <RID> 針對特定執行階段識別碼 (RID) 發佈應用程式。

應用程式可在發佈目錄中取得,並包含在其中執行所需的所有程式碼。

原生 AOT 分析包含應用程式的所有程式碼,以及應用程式依賴的程式庫。 檢閱原生 AOT 警告並採取更正步驟。 最好經常測試發佈應用程式,以在開發生命週期早期發現問題。

最佳化發佈大小

原生 AOT 可執行檔只包含支援應用程式所需的外部相依性程式碼。 系統會自動修剪未使用的程式碼。

使用 WebApplication.CreateSlimBuilder() 建立主機建立器,即可將 ASP.NET Core gRPC 服務的發佈大小最佳化。 此建立器會提供一份執行 ASP.NET Core 應用程式所需的最少功能清單。

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

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

使用原生 AOT 的優點

使用原生 AOT 發佈的應用程式具有:

  • 最小化的磁碟使用量
  • 縮短啟動時間
  • 減少記憶體需求

如需 Native AOT 提供之優點的詳細資訊和範例,請參閱 搭配使用原生 AOT 與 ASP.NET Core 的優點。

其他資源