Sdílet prostřednictvím


gRPC a nativní AOT

Autor: James Newton-King

gRPC podporuje předběžnou kompilaci .NET native (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ů.

Výstraha

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í AOT je povolena s možností PublishAot.

  1. 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
    
  2. 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řízne.

Optimalizaci velikosti publikované služby ASP.NET Core gRPC lze dosáhnout vytvořením hostitele pomocí WebApplication.CreateSlimBuilder(). 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.

Další zdroje informací