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.
- 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 ``
- 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.
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ó:
- Dung lượng đĩa tối thiểu hóa
- Thời gian khởi động giảm
- Giảm nhu cầu bộ nhớ
Để 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.