Cài đặt gRPC trên ASP .NET Core

Hiện tại với API thì quá phổ biến cho các ứng dụng từ giao tiếp client tới server hay từ instance tới instance. Tuy nhiên ngày nay công nghệ càng ngày càng phát triển với HTTP/2 ra đời đã kéo theo một loạt những thay đổi để cải thiện performance, gRPC là sự kết hợp của Protocol BuffersHTTP/2, Protocol Buffers được phát triển bởi google nó nhẹ hơn, nhanh hơn và cung cấp hiệu năng tốt hơn so với sử dụng XML hoặc Json gRPC cũng cho phép định nghĩa cấu trúc của data dưới dạng file protoc và nó tự động generate ra file sử dụng để giao tiếp với ngôn ngữ mà bạn sử dụng.
gRPC hiện tại cũng đã hỗ trợ khá đầy đủ các ngôn ngữ như C++, C#, Java, Python, Go, ...



Một số điểm mạnh của gRPC
RPC framework hiện đại, nhẹ và hiệu năng cao
Phát triển API dựa trên Protocol Buffers cho phép triển khai trên bất kỳ ngôn ngữ nào
Hỗ trợ máy khách, máy chủ và các cuộc gọi truyền phát hai chiều

Các bạn tham khảo thêm tài liệu trên trang chủ của gRPC tại đây
https://grpc.io/docs/

Bài này sẽ hướng dẫn chạy một ví dụ cơ bản nhất triển khai gRPC trên ASP .NET Core
Tham khảo cấu trúc của toàn ví dụ ở ảnh bên dưới



Các công cụ cần thiết

Visual Studio 2019 hoặc Visual Studio 2019 Preview
.NET Core 3.0

Các bạn có thể tải về code mẫu ở đây

Cài đặt gRPC Server

Tạo project hỗ trợ sẵn template grpc với lệnh sau
dotnet new grpc -o GrpcServer

Cấu trúc cơ bản gồm các phần sau
Các file .proto để định nghĩa các messages và các services. Tham khảo file user.proto bên dưới


Ở đây đơn giản mình chỉ định nghĩa một service GrpcUser với phương thức GetUser nhận vào message GetUserRequest và trả về message GetUserResponse tương ứng đều được định nghĩa trong cùng file proto này

Implement các services vừa định nghĩa


Cấu hình map các gRPC services vào host thông qua file Startup.cs


Tiến hành chạy thử
cd GrpcServer
dotnet run

Cài đặt gRPC Client

dotnet new console -o GrpcClient

Cài đặt các packages cần thiết
Google.Protobuf
Grpc.Net.Client
Grpc.Tools

dotnet add package Google.Protobuf
dotnet add package Grpc.Net.Client
dotnet add package Grpc.Tools

Copy tất cả các file .proto ở phần Server và bỏ vào thư mục Protos

Tạo kết nối tới Server và kiểm tra gọi các services

Chạy thử và kiểm tra trên quả
cd GrpcClient
dotnet run



Tham khảo
https://www.stevejgordon.co.uk/early-look-at-grpc-using-aspnet-core-3



Tiếp tục cập nhật ...