ASP.NET Core: Tổng quan về gRPC trên .NET


Khóa học qua video:
Lập trình Python All C# Lập trình C Java SQL Server PHP HTML5-CSS3-JavaScript
Đăng ký Hội viên
Tất cả các video dành cho hội viên

gRPC là một framework Gọi thủ tục từ xa (Remote Procedure Call - RPC) hiệu suất cao, không phụ thuộc vào ngôn ngữ.

Những lợi ích chính của gRPC là:

  • Framework RPC hiện đại, hiệu suất cao, nhẹ.
  • Phát triển API theo hợp đồng đầu tiên, sử dụng Bộ đệm giao thức theo mặc định, cho phép triển khai bất khả tri về ngôn ngữ.
  • Công cụ có sẵn cho nhiều ngôn ngữ để tạo ra các máy chủ và máy khách có kiểu mạnh.
  • Hỗ trợ máy khách, máy chủ và các lời gọi truyền phát hai chiều.
  • Giảm mức sử dụng mạng với tuần tự hóa nhị phân Protobuf.

Những lợi ích này khiến gRPC trở nên lý tưởng cho:

  • Các dịch vụ vi mô nhẹ cần hiệu quả cao.
  • Hệ thống đa ngôn ngữ yêu cầu nhiều ngôn ngữ để phát triển.
  • Các dịch vụ thời gian thực điểm-điểm cần xử lý các yêu cầu hoặc phản hồi truyền trực tuyến.

Hỗ trợ công cụ C# cho các file .proto

gRPC sử dụng cách tiếp cận ưu tiên hợp đồng để phát triển API. Dịch vụ và tin nhắn được định nghĩa trong file .proto:

syntax = "proto3";

service Greeter {
  rpc SayHello (HelloRequest) returns (HelloReply);
}

message HelloRequest {
  string name = 1;
}

message HelloReply {
  string message = 1;
}

Các loại .NET cho dịch vụ, ứng dụng khách và tin nhắn được tạo tự động bằng cách đưa các file .proto vào dự án:

  • Thêm tham chiếu gói vào gói Grpc.Tools.
  • Thêm file .proto vào nhóm mục <Protobuf>.
<ItemGroup>
  <Protobuf Include="Protos\greet.proto" />
</ItemGroup>

Để biết thêm thông tin về hỗ trợ công cụ gRPC, hãy xem các dịch vụ gRPC với C#.

Dịch vụ gRPC trên ASP.NET Core

Các dịch vụ gRPC có thể được lưu trữ trên ASP.NET Core. Các dịch vụ được tích hợp đầy đủ với các tính năng của ASP.NET Core như ghi nhật ký, dependency injection (DI), xác thực và ủy quyền.

Thêm dịch vụ gRPC vào ứng dụng ASP.NET Core

gRPC yêu cầu gói Grpc.AspNetCore. Để biết thông tin về cách định cấu hình gRPC trong ứng dụng .NET, hãy xem Định cấu hình gRPC.

Mẫu dự án dịch vụ gRPC

Mẫu dự án ASP.NET Core gRPC Service cung cấp dịch vụ khởi đầu:

public class GreeterService : Greeter.GreeterBase
{
    private readonly ILogger<GreeterService> _logger;

    public GreeterService(ILogger<GreeterService> logger)
    {
        _logger = logger;
    }

    public override Task<HelloReply> SayHello(HelloRequest request,
        ServerCallContext context)
    {
        _logger.LogInformation("Saying hello to {Name}", request.Name);
        return Task.FromResult(new HelloReply 
        {
            Message = "Hello " + request.Name
        });
    }
}

GreeterService kế thừa từ kiểu GreeterBase được tạo từ dịch vụ Greeter trong file .proto. Dịch vụ này được cung cấp cho khách tại Program.cs:

app.MapGrpcService<GreeterService>();

Để tìm hiểu thêm về các dịch vụ gRPC trên ASP.NET Core, hãy xem các dịch vụ gRPC với ASP.NET Core.

Gọi các dịch vụ gRPC bằng máy khách .NET

Máy khách gRPC là các loại máy khách cụ thể được tạo từ các file .proto. Máy khách gRPC cụ thể có các phương thức chuyển sang dịch vụ gRPC trong file .proto.

var channel = GrpcChannel.ForAddress("https://localhost:5001");
var client = new Greeter.GreeterClient(channel);

var response = await client.SayHelloAsync(
    new HelloRequest { Name = "World" });

Console.WriteLine(response.Message);

Máy khách gRPC được tạo bằng cách sử dụng kênh, kênh này thể hiện kết nối lâu dài với dịch vụ gRPC. Một kênh có thể được tạo bằng cách sử dụng GrpcChannel.ForAddress.

Để biết thêm thông tin về cách tạo ứng dụng khách và gọi các phương thức dịch vụ khác nhau, hãy xem Gọi dịch vụ gRPC bằng ứng dụng khách .NET.

Tài nguyên bổ sung

Nguồn: learn.microsoft.com
» Tiếp: Hướng dẫn tạo máy khách và máy chủ gRPC trong ASP.NET Core
« Trước: Hướng dẫn gọi ASP.NET Core Web API với JavaScript
Khóa học qua video:
Lập trình Python All C# Lập trình C Java SQL Server PHP HTML5-CSS3-JavaScript
Đăng ký Hội viên
Tất cả các video dành cho hội viên
Copied !!!