ASP.NET Core: Sử dụng ứng dụng khách gRPC với .NET Standard 2.0


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

Trong bài viết này

  1. Triển khai .NET
  2. Cấu hình HttpHandler
  3. Framework .NET
  4. Thư viện lõi gRPC C#
  5. Tài nguyên bổ sung

Bài viết này thảo luận về cách sử dụng máy khách .NET gRPC với các triển khai .NET hỗ trợ .NET Standard 2.0.

Triển khai .NET

Các triển khai .NET phiên bản sau (hoặc mới hơn) hỗ trợ Grpc.Net.Client nhưng không hỗ trợ đầy đủ cho HTTP/2:

  • .NET Core 2.1
  • .NET Framework 4.6.1
  • Mono 5.4
  • Xamarin.iOS 10.14
  • Xamarin.Android 8.0
  • Universal Windows Platform 10.0.16299
  • Unity 2018.1

Máy khách .NET gRPC có thể gọi các dịch vụ từ các triển khai .NET này với một số cấu hình bổ sung.

Cấu hình HttpHandler

Nhà cung cấp HTTP phải được định cấu hình bằng GrpcChannelOptions.HttpHandler. Nếu trình xử lý không được định cấu hình thì sẽ xảy ra lỗi:

System.PlatformNotSupportedException: gRPC yêu cầu cấu hình bổ sung để thực hiện thành công lệnh gọi RPC khi triển khai .NET không hỗ trợ gRPC qua HTTP/2. Nhà cung cấp HTTP phải được chỉ định bằng cách sử dụng GrpcChannelOptions.HttpHandler. Nhà cung cấp HTTP được định cấu hình phải hỗ trợ HTTP/2 hoặc được định cấu hình để sử dụng gRPC-Web.

Các triển khai .NET không hỗ trợ HTTP/2, chẳng hạn như UWP, Xamarin và Unity, có thể sử dụng gRPC-Web thay thế.

var channel = GrpcChannel.ForAddress("https://localhost:5001", new GrpcChannelOptions
    {
        HttpHandler = new GrpcWebHandler(new HttpClientHandler())
    });

var client = new Greeter.GreeterClient(channel);
var response = await client.SayHelloAsync(new HelloRequest { Name = ".NET" });

Máy khách cũng có thể được tạo bằng cách sử dụng Factory máy khách gRPC. Nhà cung cấp HTTP được định cấu hình bằng phương thức tiện ích mở rộng configurePrimaryHttpMessageHandler.

builder.Services
    .AddGrpcClient<Greet.GreeterClient>(options =>
    {
        options.Address = new Uri("https://localhost:5001");
    })
    .ConfigurePrimaryHttpMessageHandler(
        () => new GrpcWebHandler(new HttpClientHandler()));

Để biết thêm thông tin, hãy xem Định cấu hình gRPC-Web với ứng dụng khách .NET gRPC.

Quan trọng

gRPC-Web yêu cầu máy khách  máy chủ hỗ trợ nó. gRPC-Web có thể được cấu hình nhanh chóng bởi máy chủ gRPC ASP.NET Core. Việc triển khai máy chủ gRPC khác yêu cầu proxy để hỗ trợ gRPC-Web.

Framework .NET

.NET Framework hỗ trợ hạn chế cho gRPC qua HTTP/2. Để bật gRPC qua HTTP/2 trên .NET Framework, hãy định cấu hình kênh để sử dụng WinHttpHandler.

Yêu cầu và hạn chế khi sử dụng WinHttpHandler:

var channel = GrpcChannel.ForAddress("https://localhost:5001", new GrpcChannelOptions
    {
        HttpHandler = new WinHttpHandler()
    });

var client = new Greeter.GreeterClient(channel);
var response = await client.SayHelloAsync(new HelloRequest { Name = ".NET" });

Thư viện lõi gRPC C#

Một tùy chọn thay thế cho .NET Framework và Xamarin là sử dụng thư viện lõi gRPC C# để thực hiện lệnh gọi gRPC. Thư viện lõi gRPC C# là:

  • Thư viện của bên thứ ba hỗ trợ thực hiện lệnh gọi gRPC qua HTTP/2 trên .NET Framework và Xamarin.
  • Không được Microsoft hỗ trợ.
  • Ở chế độ bảo trì và sẽ không được dùng nữa để chuyển sang gRPC cho .NET.
  • Không được khuyến nghị cho các ứng dụng mới.

Tài nguyên bổ sung

Nguồn: learn.microsoft.com
» Tiếp: Giả lập máy khách gRPC trong các thử nghiệm
« Trước: Cân bằng tải phía máy khách gRPC
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 !!!