gRPC i natywna usługa AOT

Autor: James Newton-King

Usługa gRPC obsługuje natywną platformę .NET przed czasem (AOT) na platformie .NET 8. Natywna funkcja AOT umożliwia publikowanie aplikacji klienckich i serwerowych gRPC jako małych, szybkich natywnych plików wykonywalnych.

Ostrzeżenie

Na platformie .NET 8 nie wszystkie funkcje platformy ASP.NET Core są zgodne z natywną funkcją AOT. Aby uzyskać więcej informacji, zobacz ASP.NET Core i Natywna zgodność funkcji AOT.

Rozpocznij

Kompilacja AOT odbywa się po opublikowaniu aplikacji. Natywna funkcja AOT jest włączona z opcją PublishAot .

  1. Dodaj <PublishAot>true</PublishAot> do pliku projektu klienta lub aplikacji serwera gRPC. Spowoduje to włączenie natywnej kompilacji AOT podczas publikowania i włączenia dynamicznej analizy użycia kodu podczas kompilacji i edytowania.

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

    Można również włączyć natywną -aot funkcję AOT, określając opcję przy użyciu szablonu ASP.NET Core gRPC:

    dotnet new grpc -aot
    
  2. Opublikuj aplikację dla określonego identyfikatora środowiska uruchomieniowego (RID) przy użyciu polecenia dotnet publish -r <RID>.

Aplikacja jest dostępna w katalogu publikowania i zawiera cały kod potrzebny do jej uruchomienia.

Natywna analiza AOT obejmuje cały kod aplikacji i biblioteki, od których zależy aplikacja. Przejrzyj ostrzeżenia dotyczące natywnej usługi AOT i wykonaj kroki naprawcze. Warto często testować aplikacje do publikowania, aby wykrywać problemy na wczesnym etapie cyklu projektowania.

Optymalizowanie rozmiaru publikowania

Natywny plik wykonywalny AOT zawiera tylko kod z zależności zewnętrznych wymaganych do obsługi aplikacji. Nieużywany kod jest automatycznie przycinany.

Rozmiar publikowania usługi gRPC platformy ASP.NET Core można zoptymalizować, tworząc konstruktora hostów za pomocą WebApplication.CreateSlimBuilder()polecenia . Ten konstruktor udostępnia minimalną listę funkcji wymaganych do uruchomienia aplikacji ASP.NET Core.

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

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

Zalety korzystania z natywnej AOT

Aplikacje opublikowane za pomocą natywnej usługi AOT mają:

  • Zminimalizowane zużycie dysku
  • Skrócony czas uruchamiania
  • Zmniejszenie zapotrzebowania na pamięć

Aby uzyskać więcej informacji i przykłady korzyści zapewnianych przez natywną funkcję AOT, zobacz Korzyści wynikające z używania natywnej funkcji AOT z platformą ASP.NET Core.

Dodatkowe zasoby