2024年1月18日 星期四

在 ASP.NET Core 中建立 gRPC 用戶端與伺服器

 GRPC 是什麼?  有別於傳統的client 和 server 端的連線,而是持續性且高效能的連線, 連線上的架構是HTTP2 協定,使用Protocol Buffers 作為介面描述語言,連線模式,可以1 (SERVER) 對多 (CLIENT),也可雙向溝通,而一般REST 連線只能作到單向構通

一、 建立GRPC的前置作業

先安裝GRPC的專案, 如果畫面上沒有出現asp.net Core gRPC的服務時,請搜尋GRPC













選擇asp.net Core gRPC服務























按下一步,就完成了…   建立GRPC Server端

二、建立GRPC Server





















Protos/greet.proto:會定義 `Greeter` gRPC,並會用來產生 gRPC 伺服器協定

以下是範例:  


syntax = "proto3";

 option csharp_namespace = "GrpcService1";

 package greet;

 

// server的名稱為 Greeter

service Greeter {

  // Sends a greeting

  rpc SayHello (HelloRequest) returns (HelloReply);

}

 

// The request 參數 name

message HelloRequest {

  string name = 1;

}

 // The response 回傳 message 

message HelloReply {

  string message = 1;

} 

三、建立GRPC Client


這用於client 與server端 的協定,所以clint端也需要相同的.proto, 所以從server端的 Protos/greet.proto copy一份到client端 Protos路徑下













以下是client的內容 ,但與server端略有不同,

選擇.proto 按下右鍵,在 gprc stub Classes 選擇 client Only



syntax = "proto3";

 option csharp_namespace = "GrpcGreeterClient"; //要自已設定clientOnly

 package greet;

 

// server端的server名稱一致

service Greeter {

  // Sends a greeting

  rpc SayHello (HelloRequest) returns (HelloReply);

}

 

// The request message containing the user's name.

message HelloRequest {

  string name = 1;

}

 

// The response message containing the greetings.

message HelloReply {

  string message = 1;

}


四、執行結果

server 端的執行檔




















client 端的執行檔