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