Nguon: Microsoft Learn · .NET 8.0

gRPC và Native AOT

Nguồn: gRPC and Native AOT

gRPC hỗ trợ .NET native ahead-of-time (AOT) trong .NET 8. Native AOT (biên dịch trước thời gian chạy gốc) cho phép publish các ứng dụng gRPC client và server dưới dạng các native executables (file thực thi gốc) nhỏ, nhanh.

Trong .NET 8, không phải tất cả các tính năng ASP.NET Core đều tương thích với Native AOT. Để biết thêm thông tin, xem ASP.NET Core and Native AOT compatibility.

Bắt đầu

Quá trình biên dịch AOT xảy ra khi ứng dụng được publish. Native AOT được bật với tùy chọn PublishAot.

  1. Thêm <PublishAot>true</PublishAot> vào file project của ứng dụng gRPC client hoặc server. Điều này sẽ bật biên dịch Native AOT trong quá trình publish và bật phân tích sử dụng dynamic code trong quá trình build và chỉnh sửa.

```xml <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 cũng có thể được bật bằng cách chỉ định tùy chọn --aot với template gRPC của ASP.NET Core:

``dotnetcli dotnet new grpc --aot ``

  1. Publish ứng dụng cho một runtime identifier (RID) cụ thể sử dụng dotnet publish -r <RID>.

Ứng dụng có sẵn trong thư mục publish và chứa tất cả code cần thiết để chạy trong đó.

Phân tích Native AOT bao gồm tất cả code của ứng dụng và các thư viện mà ứng dụng phụ thuộc vào. Xem xét các cảnh báo Native AOT và thực hiện các bước khắc phục. Thực hành tốt là test publish ứng dụng thường xuyên để phát hiện sự cố sớm trong vòng đời phát triển.

Tối ưu hóa kích thước publish

Một Native AOT executable chỉ chứa code từ các external dependencies (phụ thuộc bên ngoài) cần thiết để hỗ trợ ứng dụng. Code không sử dụng được tự động trimmed away (loại bỏ).

Kích thước publish của một gRPC service ASP.NET Core có thể được tối ưu hóa bằng cách tạo host builder với WebApplication.CreateSlimBuilder(). Builder này cung cấp danh sách tối thiểu các tính năng cần thiết để chạy một ứng dụng ASP.NET Core.

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

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

Lợi ích của việc sử dụng Native AOT

Các ứng dụng được publish với Native AOT có:

Để biết thêm thông tin và các ví dụ về lợi ích mà Native AOT cung cấp, xem Benefits of using Native AOT with ASP.NET Core.