Share via


gRPC und native AOT-Kompilierung

Von James Newton-King

gRPC unterstützt native .NET-AOT-Kompilierung in .NET 8. Native AOT-Kompilierung ermöglicht die Veröffentlichung von gRPC-Client-Apps und -Server-Apps als kleine, schnelle native ausführbare Dateien.

Warnung

In .NET 8 sind nicht alle ASP.NET Core-Features mit nativer AOT-Kompilierung kompatibel. Weitere Informationen finden Sie unter Kompatibilität von ASP.NET Core und nativer AOT-Kompilierung.

Erste Schritte

Die AOT-Kompilierung erfolgt beim Veröffentlichen der App. Native AOT-Kompilierung wird mit der Option PublishAot aktiviert.

  1. Fügen Sie <PublishAot>true</PublishAot> der Projektdatei der gRPC-Client-App oder der gRPC-Server-App hinzu. Dadurch werden die native AOT-Kompilierung während der Veröffentlichung und die dynamische Analyse der Codeverwendung während des Build- und Bearbeitungsvorgangs aktiviert.

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

    Native AOT kann auch aktiviert werden, indem Sie die Option -aot mit der ASP.NET Core-gRPC-Vorlage angeben:

    dotnet new grpc -aot
    
  2. Veröffentlichen Sie die App für einen bestimmten Runtimebezeichner (Runtime Identifier, RID) mithilfe von dotnet publish -r <RID>.

Die App ist im Veröffentlichungsverzeichnis verfügbar und enthält den gesamten Code, der zum Ausführen benötigt wird.

Die Analyse der nativen AOT-Kompilierung umfasst den gesamten Code der App und die Bibliotheken, von der die App abhängig ist. Überprüfen Sie Warnungen der nativen AOT-Kompilierung und führen Sie Korrekturschritte durch. Es ist ratsam, die Veröffentlichung von Apps häufig zu testen, um Probleme frühzeitig im Entwicklungslebenszyklus zu erkennen.

Optimieren der Veröffentlichungsgröße

Eine ausführbare Datei für die native AOT-Kompilierung enthält nur den Code aus externen Abhängigkeiten, die zur Unterstützung der App erforderlich sind. Nicht verwendeter Code wird automatisch entfernt.

Die Veröffentlichungsgröße eines ASP.NET Core-gRPC-Diensts kann durch Erstellen des Host-Generators mit WebApplication.CreateSlimBuilder() optimiert werden. Dieser Generator stellt eine Liste von Features bereit, die zum Ausführen einer ASP.NET Core-App mindestens erforderlich sind.

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

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

Vorteile der Verwendung der nativen AOT-Kompilierung

Apps, die mit nativer AOT-Kompilierung veröffentlicht werden, verfügen über Folgendes:

  • Minimierter benötigter Speicherplatz auf dem Datenträger
  • Verkürzte Startzeit
  • Reduzierter Arbeitsspeicherbedarf

Weitere Informationen und Beispiele für die Vorteile der nativen AOT-Kompilierung finden Sie unter Vorteile der Verwendung von nativer AOT-Kompilierung mit ASP.NET Core.

Zusätzliche Ressourcen