Delen via


gRPC en systeemeigen AOT

Door James Newton-King

gRPC ondersteunt .NET native ahead-of-time (AOT) in .NET 8. Systeemeigen AOT maakt het publiceren van gRPC-client- en server-apps mogelijk als kleine, snelle systeemeigen uitvoerbare bestanden.

Waarschuwing

In .NET 8 zijn niet alle ASP.NET Core-functies compatibel met Systeemeigen AOT. Zie ASP.NET Core- en Native AOT-compatibiliteit voor meer informatie.

Aan de slag

AOT-compilatie vindt plaats wanneer de app wordt gepubliceerd. Systeemeigen AOT is ingeschakeld met de PublishAot optie.

  1. Voeg <PublishAot>true</PublishAot> toe aan het projectbestand van de gRPC-client- of serverapp. Hiermee schakelt u systeemeigen AOT-compilatie in tijdens het publiceren en inschakelen van dynamische codegebruiksanalyse tijdens het bouwen en bewerken.

    <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>
    

    Systeemeigen AOT kan ook worden ingeschakeld door de --aot optie op te geven met de ASP.NET Core gRPC-sjabloon:

    dotnet new grpc --aot
    
  2. Publiceer de app voor een specifieke runtime-id (RID) met behulp van dotnet publish -r <RID>.

De app is beschikbaar in de publicatiemap en bevat alle code die nodig is om erin uit te voeren.

Systeemeigen AOT-analyse omvat alle code van de app en de bibliotheken waarvan de app afhankelijk is. Bekijk systeemeigen AOT-waarschuwingen en voer corrigerende stappen uit. Het is een goed idee om publicatie-apps regelmatig te testen om problemen vroeg in de ontwikkelingslevenscyclus te detecteren.

Publicatiegrootte optimaliseren

Een systeemeigen AOT-uitvoerbaar bestand bevat alleen de code van externe afhankelijkheden die nodig zijn om de app te ondersteunen. Ongebruikte code wordt automatisch weggesneden.

De publicatiegrootte van een ASP.NET Core gRPC-service kan worden geoptimaliseerd door de hostbouwer te maken met WebApplication.CreateSlimBuilder(). Deze opbouwfunctie biedt een minimale lijst met functies die vereist zijn voor het uitvoeren van een ASP.NET Core-app.

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

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

Voordelen van het gebruik van systeemeigen AOT

Apps die met Systeemeigen AOT zijn gepubliceerd, hebben:

  • Geminimaliseerde schijfvoetafdruk
  • Verminderde opstarttijd
  • Geheugenvraag verminderen

Zie Voordelen van het gebruik van systeemeigen AOT met ASP.NET Core voor meer informatie en voorbeelden van de voordelen die Native AOT biedt.

Aanvullende bronnen