您好,登錄后才能下訂單哦!
本文小編為大家詳細介紹“.Net Core微服務rpc框架GRPC通信的方法是什么”,內容詳細,步驟清晰,細節處理妥當,希望這篇“.Net Core微服務rpc框架GRPC通信的方法是什么”文章能幫助大家解決疑惑,下面跟著小編的思路慢慢深入,一起來學習新知識吧。
rpc,全稱Remote Procedure Call,通過它,你可以像調用本地方法一樣調用遠程服務。前端可以調用后端方法,后端也可以調用前端方法。其實這個概念并不陌生,上一篇關于web實時應用的文章也提到了這個概念,并實現了前后端互調的操作。
在正式開始使用grpc之前,我們還需要掌握protocol buffer的概念。
grpc來自大名鼎鼎的谷歌,孵化于CNCF基金會(docker、k8s同樣出自這個基金會)。它是一款高性能、開源、通用的rpc框架,你可以通過它來定義rpc的請求和響應。它基于http/2,全雙工通信、低延遲、高效率、支持流、可輕松的插入身份認證、負載均衡、監控日志等等等等。。。關鍵是它還可以跨語言操作。只要server端或client端是它支持的語言編寫,都可以跨語言操作。官方支持的開發語言:
因為grpc采用合約優先的API開發模式,默認采用protocol buffer作為接口設計語言,我們可以在proto文件里定義消息和服務。當然,作為默認選項,它自然是有優勢的,主要是這些:
1、語法簡單,容易上手。
2、可生成所有(官方稱)主流開發語言的代碼。
3、二進制格式,效率高的同時也很適合大數據傳輸。
了解完基礎以后,先上一個小demo參考一下:
syntax = "proto3"; import "aaa.proto"; option csharp_namespace = "gRPCApiDemo.Protos"; package Demo; service Math{ rpc Add (AddRequest) returns (AddRespones); } message AddRequest{ int32 a=1; int32 b=2; } message AddRespones{ int32 a=1; repeated int32 b=2; reserved 3,4 to 10; reserved "phone";}
解讀一下:
syntax:聲明當前使用的語法
import:引入其他proto
option csharp_namespace:打包以后類的命名空間,優先級高
package:打包以后類的命名空間,優先級低
service:聲明服務
rpc Add (AddRequest) returns (AddRespones):聲明一個rpc調用,接收AddRequest消息,返回AddRespones消息。
message:聲明消息
int32:數據類型,常用的還有int64、float、string、bool等,有興趣的可以去查一下。
a=1:如果把a看作字段名,那么1相當于字段名的別名。
repeated:可重復字段。如果給b多個值,那么b差不多相當于一個int類型的數組,先后順序會被保留。
reserved:保留字段,聲明以后的字段名和別名都不允許再使用了。需要注意字段名和別名不能一起聲明。
proto編譯的主要目的是生成代碼。
首先是工具,點擊這里,選出適合自己系統的插件,如圖:
下載完以后隨便找個目錄解壓,然后把其中的bin目錄添加到環境變量里:
如果在控制臺輸入protoc可以看到一堆信息彈出來,就表示安裝成功了:
在我們使用protoc把proto文件編譯成c#文件之前,我們還需要做這些:
1、指定proto項目路徑。
可以用rotoc --IPath(或--proto_path)或者直接打開控制臺轉到protoc安裝目錄。
2、指定生成文件的類型和路徑。
protoc --csharp_out=cs grpcApi.proto //如果有多個proto文件想批量生成可以使用 *.proto
上面的cs是我新建的文件夾名(這個文件夾是建立在proto項目目錄下的),grpcApi.proto是自建的proto文件,執行結果見圖:
成功以后會在指定的目錄下生成cs文件,見圖:
生成的文件和proto文件命名一樣,只不過首字母會自動大寫,打開看看:
好吧能看懂的有限,所以看看就行了。
不過有一點千萬注意:這個cs文件不要手動改,不要手動改,不要手動改!
讀到這里,這篇“.Net Core微服務rpc框架GRPC通信的方法是什么”文章已經介紹完畢,想要掌握這篇文章的知識點還需要大家自己動手實踐使用過才能領會,如果想了解更多相關內容的文章,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。