gRPC 和原生 AOT
gRPC 在 .NET 8 中支援 .NET 原生預先 (AOT)。 原生 AOT 可讓您將 gRPC 用戶端和伺服器應用程式以小型、快速的原生可執行檔的形式來發佈。
警告
在 .NET 8 中,並非所有 ASP.NET Core 功能都與原生 AOT 相容。 如需詳細資訊,請參閱 ASP.NET Core 和 Native AOT 相容性。
開始使用
AOT 編譯會在發佈應用程式時執行。 原生 AOT 是使用 PublishAot
選項來加以啟用。
將
<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
使用
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 的優點。