gRPC 및 네이티브 AOT

작성자: James Newton-King

gRPC는 .NET 8에서 .NET 네이티브 AOT(Ahead-Of-Time) 를 지원합니다. 네이티브 AOT를 사용하면 gRPC 클라이언트 및 서버 앱을 작고 빠른 네이티브 실행 파일로 게시할 수 있습니다.

Warning

.NET 8에서는 모든 ASP.NET Core 기능이 Native AOT와 호환되는 것은 아닙니다. 자세한 내용은 ASP.NET Core 및 네이티브 AOT 호환성을 참조 하세요.

시작하기

AOT 컴파일은 앱이 게시될 때 발생합니다. 네이티브 AOT는 옵션을 사용하여 사용하도록 설정됩니다 PublishAot .

  1. gRPC 클라이언트 또는 서버 앱의 프로젝트 파일에 추가 <PublishAot>true</PublishAot> 합니다. 이렇게 하면 게시하는 동안 네이티브 AOT 컴파일을 사용하도록 설정하고 빌드 및 편집 중에 동적 코드 사용 현황 분석을 사용하도록 설정합니다.

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

    ASP.NET Core gRPC 템플릿을 사용하여 옵션을 지정하여 -aot 네이티브 AOT를 사용하도록 설정할 수도 있습니다.

    dotnet new grpc -aot
    
  2. 를 사용하여 특정 RID(런타임 식별자) 에 대한 앱을 게시합니다 dotnet publish -r <RID>.

앱은 게시 디렉터리에서 사용할 수 있으며 앱에서 실행하는 데 필요한 모든 코드를 포함합니다.

네이티브 AOT 분석에는 앱의 모든 코드와 앱이 의존하는 라이브러리가 포함됩니다. 네이티브 AOT 경고를 검토하고 수정 단계를 수행합니다. 개발 수명 주기 초기에 문제를 발견하기 위해 게시 앱을 자주 테스트하는 것이 좋습니다.

게시 크기 최적화

네이티브 AOT 실행 파일에는 앱을 지원하는 데 필요한 외부 종속성 코드만 포함됩니다. 사용하지 않는 코드는 자동으로 잘립니다.

를 사용하여 호스트 작성 WebApplication.CreateSlimBuilder()기를 만들어 ASP.NET Core gRPC 서비스의 게시 크기를 최적화할 수 있습니다. 이 작성기에서는 ASP.NET Core 앱을 실행하는 데 필요한 최소한의 기능 목록을 제공합니다.

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

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

Native AOT 사용의 이점

네이티브 AOT를 사용하여 게시된 앱에는 다음이 있습니다.

  • 디스크 공간 최소화
  • 시작 시간 단축
  • 메모리 수요 감소

Native AOT에서 제공하는 이점에 대한 자세한 내용과 예제는 ASP.NET Core에서 Native AOT를 사용할 경우의 이점을 참조 하세요.

추가 리소스