iT邦幫忙

2023 iThome 鐵人賽

DAY 5
0
自我挑戰組

gRPC通訊框架認識與實作系列 第 5

gRPC通訊框架認識與實作【Day 05】

  • 分享至 

  • xImage
  •  

昨天回南部拜訪長輩當日來回,不只網路上當鐵人,現實生活也鐵人啊@@

gRPC可以在各種不同的程式語言裡面實作,主要的method會由套件自動生成,因此我們只要專注在grpc的設定檔(.proto)上面即可。
首先我們新開一個java專案,請在main的底下新增一個名為proto的資料夾,這個資料夾會用來放置我們的.proto設定檔。
https://ithelp.ithome.com.tw/upload/images/20230910/20147417PddVNrRFIC.jpg

這個.proto檔可以協助我們生成所有要使用的request跟response,所有的傳遞內容都設定在這裡,也因此我們其實不用去實作request跟response的通訊method。
一開始我們先新增一個IronMan.proto並打開檔案後寫上

syntax = "proto3";

option java_multiple_files = false;
option java_package="com.iron";
option java_outer_classname = "IronManProto";

syntax=proto3 表示現在使用的proto版本是proto3。
java_package是指定生成檔案的存放路徑,java_outer_claseename的名稱會用來產生method,例如在這邊寫IronManProto,會在生成資料夾內產生一個叫IronManProto的檔案。

同時,我們來繼續新增request跟response的內容:

message IronManRequest01{
  string name = 1;
  string age = 2;
}

message IronManResponse01{
  string result = 1;
  string age = 2;
}

這是我們用來組織request跟response的型別,基本結構如下:

型態 變數名稱 = 編號;

在.proto檔中,常見的資料型態如:int32、int64、string、bool...等
這些跟java的基本型別對照可以參考
https://ithelp.ithome.com.tw/upload/images/20230910/20147417TQFhbJ2rDN.jpg

需要特別注意的是,最後面的數字指的是編號,而且編號從1開始。

最後,我們來新增service method:

service IronManService{
  rpc IronMan01(IronManRequest01) returns (IronManResponse01) {}
}

這個就是我們定義在client跟server兩端所要發送跟回傳的參數內容。這邊會產生第二個檔案,也就是IronManServiceGrpc,同樣放置在java_package所指定的路徑資料夾內。
到這邊為止,我們所需要的gRPC各項method都已經準備完成了。
明天,我們就來生成正式的method吧!!

參考資料

https://protobuf.dev/programming-guides/proto3/


上一篇
gRPC通訊框架認識與實作【Day 04】
下一篇
gRPC通訊框架認識與實作【Day 06】
系列文
gRPC通訊框架認識與實作30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言