溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

.Net?Core微服務(wù)rpc框架GRPC通信的方法是什么

發(fā)布時(shí)間:2022-01-11 13:32:37 來源:億速云 閱讀:130 作者:iii 欄目:開發(fā)技術(shù)

本文小編為大家詳細(xì)介紹“.Net Core微服務(wù)rpc框架GRPC通信的方法是什么”,內(nèi)容詳細(xì),步驟清晰,細(xì)節(jié)處理妥當(dāng),希望這篇“.Net Core微服務(wù)rpc框架GRPC通信的方法是什么”文章能幫助大家解決疑惑,下面跟著小編的思路慢慢深入,一起來學(xué)習(xí)新知識吧。

什么是rpc?

rpc,全稱Remote Procedure Call,通過它,你可以像調(diào)用本地方法一樣調(diào)用遠(yuǎn)程服務(wù)。前端可以調(diào)用后端方法,后端也可以調(diào)用前端方法。其實(shí)這個(gè)概念并不陌生,上一篇關(guān)于web實(shí)時(shí)應(yīng)用的文章也提到了這個(gè)概念,并實(shí)現(xiàn)了前后端互調(diào)的操作。

在正式開始使用grpc之前,我們還需要掌握protocol buffer的概念。

什么是grpc?

grpc來自大名鼎鼎的谷歌,孵化于CNCF基金會(docker、k8s同樣出自這個(gè)基金會)。它是一款高性能、開源、通用的rpc框架,你可以通過它來定義rpc的請求和響應(yīng)。它基于http/2,全雙工通信、低延遲、高效率、支持流、可輕松的插入身份認(rèn)證、負(fù)載均衡、監(jiān)控日志等等等等。。。關(guān)鍵是它還可以跨語言操作。只要server端或client端是它支持的語言編寫,都可以跨語言操作。官方支持的開發(fā)語言:

.Net?Core微服務(wù)rpc框架GRPC通信的方法是什么

為什么用protocol buffer?

因?yàn)間rpc采用合約優(yōu)先的API開發(fā)模式,默認(rèn)采用protocol buffer作為接口設(shè)計(jì)語言,我們可以在proto文件里定義消息和服務(wù)。當(dāng)然,作為默認(rèn)選項(xiàng),它自然是有優(yōu)勢的,主要是這些:

  • 1、語法簡單,容易上手。

  • 2、可生成所有(官方稱)主流開發(fā)語言的代碼。

  • 3、二進(jìn)制格式,效率高的同時(shí)也很適合大數(shù)據(jù)傳輸。

了解完基礎(chǔ)以后,先上一個(gè)小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:聲明當(dāng)前使用的語法

  • import:引入其他proto

  • option csharp_namespace:打包以后類的命名空間,優(yōu)先級高

  • package:打包以后類的命名空間,優(yōu)先級低

  • service:聲明服務(wù)

  • rpc Add (AddRequest) returns (AddRespones):聲明一個(gè)rpc調(diào)用,接收AddRequest消息,返回AddRespones消息。

  • message:聲明消息

  • int32:數(shù)據(jù)類型,常用的還有int64、float、string、bool等,有興趣的可以去查一下。

  • a=1:如果把a(bǔ)看作字段名,那么1相當(dāng)于字段名的別名。

  • repeated:可重復(fù)字段。如果給b多個(gè)值,那么b差不多相當(dāng)于一個(gè)int類型的數(shù)組,先后順序會被保留。

  • reserved:保留字段,聲明以后的字段名和別名都不允許再使用了。需要注意字段名和別名不能一起聲明。

編譯proto

proto編譯的主要目的是生成代碼。

首先是工具,點(diǎn)擊這里,選出適合自己系統(tǒng)的插件,如圖:

.Net?Core微服務(wù)rpc框架GRPC通信的方法是什么

下載完以后隨便找個(gè)目錄解壓,然后把其中的bin目錄添加到環(huán)境變量里:

.Net?Core微服務(wù)rpc框架GRPC通信的方法是什么

如果在控制臺輸入protoc可以看到一堆信息彈出來,就表示安裝成功了:

.Net?Core微服務(wù)rpc框架GRPC通信的方法是什么

在我們使用protoc把proto文件編譯成c#文件之前,我們還需要做這些:

  • 1、指定proto項(xiàng)目路徑。

可以用rotoc --IPath(或--proto_path)或者直接打開控制臺轉(zhuǎn)到protoc安裝目錄。

  • 2、指定生成文件的類型和路徑。

protoc --csharp_out=cs grpcApi.proto   //如果有多個(gè)proto文件想批量生成可以使用  *.proto

上面的cs是我新建的文件夾名(這個(gè)文件夾是建立在proto項(xiàng)目目錄下的),grpcApi.proto是自建的proto文件,執(zhí)行結(jié)果見圖:

.Net?Core微服務(wù)rpc框架GRPC通信的方法是什么

成功以后會在指定的目錄下生成cs文件,見圖:

.Net?Core微服務(wù)rpc框架GRPC通信的方法是什么

生成的文件和proto文件命名一樣,只不過首字母會自動大寫,打開看看:

.Net?Core微服務(wù)rpc框架GRPC通信的方法是什么

好吧能看懂的有限,所以看看就行了。

不過有一點(diǎn)千萬注意:這個(gè)cs文件不要手動改,不要手動改,不要手動改!

讀到這里,這篇“.Net Core微服務(wù)rpc框架GRPC通信的方法是什么”文章已經(jīng)介紹完畢,想要掌握這篇文章的知識點(diǎn)還需要大家自己動手實(shí)踐使用過才能領(lǐng)會,如果想了解更多相關(guān)內(nèi)容的文章,歡迎關(guān)注億速云行業(yè)資訊頻道。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI