gRPC a nativní AOT
Autor: James Newton-King
gRPC podporuje rozhraní .NET Native předem (AOT) v .NET 8. Nativní AOT umožňuje publikování klientských a serverových aplikací gRPC jako malých a rychlých nativních spustitelných souborů.
Upozorňující
V .NET 8 nejsou všechny funkce ASP.NET Core kompatibilní s nativní AOT. Další informace najdete v tématu ASP.NET Core a nativní kompatibilita AOT.
Začínáme
Kompilace AOT se provádí při publikování aplikace. Nativní funkce AOT je povolená PublishAot
s možností.
Přidejte
<PublishAot>true</PublishAot>
do souboru projektu klienta nebo serverové aplikace gRPC. Tím povolíte nativní kompilaci AOT během publikování a povolíte analýzu dynamického použití kódu během sestavování a úprav.<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>
Nativní AOT lze také povolit zadáním
-aot
možnosti pomocí šablony ASP.NET Core gRPC:dotnet new grpc -aot
Publikujte aplikaci pro konkrétní identifikátor modulu runtime (RID) pomocí
dotnet publish -r <RID>
.
Aplikace je dostupná v adresáři publikování a obsahuje veškerý kód potřebný ke spuštění.
Nativní analýza AOT zahrnuje veškerý kód aplikace a knihovny, na které aplikace závisí. Zkontrolujte nativní upozornění AOT a proveďte opravné kroky. Často je vhodné otestovat publikování aplikací, abyste zjistili problémy v rané fázi životního cyklu vývoje.
Optimalizace velikosti publikování
Nativní spustitelný soubor AOT obsahuje pouze kód z externích závislostí potřebných k podpoře aplikace. Nepoužitý kód se automaticky oříznou.
Velikost publikování služby ASP.NET Core gRPC lze optimalizovat vytvořením tvůrce hostitelů pomocí WebApplication.CreateSlimBuilder()
nástroje . Tento tvůrce poskytuje minimální seznam funkcí potřebných ke spuštění aplikace ASP.NET Core.
var builder = WebApplication.CreateSlimBuilder(args);
builder.Services.AddGrpc();
var app = builder.Build();
app.MapGrpcService<GreeterService>();
app.Run();
Výhody používání nativní AOT
Aplikace publikované s nativní AOT mají:
- Minimalizované nároky na disk
- Kratší doba spuštění
- Snížení poptávky po paměti
Další informace a příklady výhod, které nativní AOT poskytuje, najdete v tématu Výhody použití nativní AOT s ASP.NET Core.