C# netCore Grpc服務 (2)配置 ,proto以及四種呼叫方式
上一篇:C# netCore Grpc服務 (1)初步認知和HelloWorld
先補充一下,上一篇中,通過程式碼指定地址
相關配置值在appsettings.json檔案中
也可以通過配置檔案進行指定:
"Kestrel": {
//"EndpointDefaults": {
// "Protocols": "Http2"
//},
"Endpoints": {
"HttpsInlineCertFile": {
"Url": "http://localhost:50001",
"Protocols": "Http2" //,
//"Certificate": {//證書,使用TLS時指定路徑及密碼
// "Path": "<path to .pfx file>",
// "Password": "<certificate password>"
//}
}
}
}
說明:
指定服務名稱,以及呼叫方法
指定訊息型別,裡面有哪些成員名稱以及位置
(支援string,Int32,double,int64等多種型別)
1.自定義服務:
1.建立proto檔案
在專案檔案中新增對此檔案的引用
在proto檔案中宣告方法,訊息型別
2.建立服務
程式碼如上圖
實現proto檔案中指定的方法
(注意服務類繼承的父類要和proto檔案中指定service名稱一致)
格式是:
xxx.xxxBase
客戶端配置:基本同上篇
最終效果:
服務端:
客戶端:
2.gRPC方法型別
GRPC 呼叫通過在客戶端上呼叫方法來啟動。 GRPC 客戶端將處理訊息序列化,並將 gRPC 呼叫定址到正確的服務。
gRPC 具有不同型別的方法。 使用客戶端進行 gRPC 呼叫的方式取決於所呼叫的方法的型別。
1.一元呼叫
上面的case中的方法型別為一元呼叫
一元呼叫:從客戶端傳送請求訊息開始。 服務完成後,將返回響應訊息。
*Proto檔案中的每個一元服務方法將導致用於呼叫方法的具體 gRPC 客戶端型別上有兩個 .net 方法:一個非同步方法和一個阻止方法。
例如, GreeterClient可以通過兩種方法呼叫SayHello
GreeterClient.SayHelloAsync-以Greeter.SayHello非同步方式呼叫服務。 可以等待。
GreeterClient.SayHello-呼叫Greeter.SayHello服務和阻止到完成。 不要在非同步程式碼中使用。
2.服務端流式處理呼叫
上面的一元呼叫屬於 客戶端1個輸入,服務端1個輸出
服務端流式處理呼叫則屬於 客戶端1個輸入,服務端多個輸出(一個流)
proto格式:
注意GetLocateInfo3中的returns,和第一個方法相比其他都一樣,僅在returns中多了一個stream
重寫方法:
在LocateService中 鍵入override
修改proto檔案儲存後直接通過這種方式重寫即可
或者另一種方法:
點選LocaterBase,然後按F12,可檢視相關函式的定義,將其複製出來然後簡寫即可
上圖重寫中,給輸出流寫入了5個LocateReply
客戶端:
新增方法的宣告,具體同上
呼叫方式:
最終效果截圖:
服務端:
客戶端:
3.客戶端流式處理呼叫
方法定義同上,只是stream的位置不在返回了,而是在輸入
服務端方法重寫:
客戶端配置:略,同上
客戶端呼叫:
呼叫方法會返回一個AsyncClientStreamingCall型別
再呼叫RequestStream.WriteAsync非同步方法寫入輸入引數流
寫入完成後
通知完成,呼叫CompleteAsync方法
再呼叫非同步方法獲取返回值
最終結果:
服務端:懶得貼圖了
客戶端:
最後一行是客戶端流式呼叫的結果
4.雙向流
其實這個也蠻簡單,相當於上面2.3兩個的結合
呼叫:
服務端:
客戶端:
相關文章
- C# 實現 gRPC 服務和呼叫C#RPC
- grpc套路(四)php通過grpc呼叫golang的grpc介面服務RPCPHPGolang
- 使用Golang搭建gRPC服務提供給.NetCore客戶端呼叫GolangRPCNetCore客戶端
- c# gRPC服務中 常見proto支援的資料型別C#RPC資料型別
- GRPC 服務呼叫實踐(一)RPC
- grpc實戰——服務端流式呼叫RPC服務端
- gRPC(2):四種基本通訊模式RPC模式
- SpringCloud 三種服務呼叫方式,你學會了嗎?SpringGCCloud
- .NetCore|.Net6 gRPC服務開發及本地除錯NetCoreRPC除錯
- .NET Core微服務開發服務間呼叫篇-GRPC微服務RPC
- NetCore服務虛擬化01(叢集元件Sodao.Core.Grpc)NetCore元件RPC
- Dapr + .NET Core實戰(十二)服務呼叫之GRPCRPC
- gRPC學習之四:實戰四類服務方法RPC
- gRPC 之流式呼叫原理 http2 協議分析(四)RPCHTTP協議
- gRPC之proto語法RPC
- grpc套路proto檔案RPC
- nacos實現Java和.NetCore的服務註冊和呼叫JavaNetCore
- 服務冪等以及常用實現方式
- 容器服務 TKE 上服務暴露的幾種方式
- 微服務之間的呼叫方式哪種最佳?微服務
- Linux下chkconfig命令詳解即新增服務以及兩種方式啟動關閉系統服務Linux
- SpringCloud之使用Feign跨服務呼叫最佳方式SpringGCCloud
- .NetCore中三種注入方式的思考NetCore
- Spring事務配置的五種方式Spring
- 服務探活的五種方式
- 【.NET6】gRPC服務端和客戶端開發案例,以及minimal API服務、gRPC服務和傳統webapi服務的訪問效率大對決RPC服務端客戶端APIWeb
- openstack基礎構架以及服務方式解析
- 【GoLang 那點事】gRPC 之流式呼叫原理 http2 協議分析(四)GolangRPCHTTP協議
- gRPC應用實戰:(三)gRPC四種請求模式RPC模式
- 分散式服務框架 gRPC分散式框架RPC
- 讓 gRPC 提供 REST 服務RPCREST
- 一種WebService的呼叫方式Web
- GRpc新增客戶端的五種方式RPC客戶端
- 把 Console 部署成 Windows 服務,四種方式總有一款適合你!Windows
- Flink Yarn的2種任務提交方式Yarn
- 服務限流,我有6種實現方式…
- 難住了,微服務之間的呼叫方式哪種更優?微服務
- GRPC融合到aps.netcore 中RPCNetCore