GRpc新增客戶端的五種方式
阿新 • • 發佈:2020-05-26
隨著微服務的發展,相信越來越多的.net人員也開始接觸GRpc這門技術,大家生成GRpc客戶端的方式也各不相同,今天給大家介紹一下依據Proto檔案生成Rpc客戶端的五種方式
> 前提:需要安裝4個Nuget包
Google.Protobuf、Grpc、GRpc.Net.ClientFactory、GRpc.Tools
VS安裝命令如下
Install-Package Google.Protobuf
Install-Package Grpc
Install-Package GRpc.Net.ClientFactory
Install-Package GRpc.Tools
### 準備工作
首先我們新建一個簡單的.net core3.1類庫 命名為:GRpc.Proto 然後新增HelloWord.Proto 新增一個簡單的協議
```html
syntax = "proto3";
import "google/protobuf/timestamp.proto";
option csharp_namespace = "HelloWordDemo";
package HelloWord;
service HelloWord{
rpc SayHelloWord(SayHelloWordRequest) returns (SayHelloWordResponse);
}
message SayHelloWordRequest{
string message=1;//傳送訊息
}
message SayHelloWordResponse{
string message=2;//返回訊息
}
```
然後給該類庫安裝上述的安裝包(當前類庫只是協議,不需要安裝GRpc.Net.ClientFactory)
截止到現在,我們的準備工作已經做好了,接下來開始進入正題
### 通過新增服務引用
新增一個名為GRpcClient的控制檯,安裝以上介紹的四個類庫
專案右鍵點選新增-->服務引用
![在這裡插入圖片描述](https://img-blog.csdnimg.cn/20200526153202267.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM0NjIzNTU3,size_16,color_FFFFFF,t_70)
選擇瀏覽找到我們剛剛新增的proto檔案 將選擇要生成的類的型別選"客戶端"
![在這裡插入圖片描述](https://img-blog.csdnimg.cn/20200526153325412.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM0NjIzNTU3,size_16,color_FFFFFF,t_70)
點選確定 第一種就完成了
### 通過Nuget包新增引用
這種在公司專案中比較推薦使用的(前提是已經有了私有nuget庫)
找到我們剛剛新增的GRpc.Proto專案,右鍵屬性,找到打包,填寫相對應的資訊,一定要**勾選在構建會生成Nuget包**
![在這裡插入圖片描述](https://img-blog.csdnimg.cn/20200526153631375.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM0NjIzNTU3,size_16,color_FFFFFF,t_70)
重新生成之後就可以在專案debug目錄下看到對應的nuget包了,推送到私有的nuget庫就可以了
### 直接通過Proto檔案引用
在專案下新建一個檔案Until,將上面的HelloWord.Proto檔案放在新建的檔案下,右鍵點選HelloWord.Proto的屬性
![在這裡插入圖片描述](https://img-blog.csdnimg.cn/20200526154356811.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM0NjIzNTU3,size_16,color_FFFFFF,t_70)
生成操作選擇ProtoBuf conpiler
會出現一個新的屬性:如下
![在這裡插入圖片描述](https://img-blog.csdnimg.cn/20200526154459878.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM0NjIzNTU3,size_16,color_FFFFFF,t_70)
此時我們選擇Client only
客戶端就生成好了
### 通過url新增引用
專案右鍵點選新增-->服務引用
![在這裡插入圖片描述](https://img-blog.csdnimg.cn/20200526155104396.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM0NjIzNTU3,size_16,color_FFFFFF,t_70)
選擇Url(一定要公網可以訪問,如果是在github上的一定要有如下的操作)
![在這裡插入圖片描述](https://img-blog.csdnimg.cn/2020052615520639.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM0NjIzNTU3,size_16,color_FFFFFF,t_70)
點選Raw
![在這裡插入圖片描述](https://img-blog.csdnimg.cn/20200526155244640.png)
使用這個路徑 才可以成功
### 通過地址生成Proto檔案引用
這種方式其實和上面一種方式的用法差不多,但是感覺還是需要寫一些。萬一大家哪天需要用到呢
這種方法是通過donnet命令和proto檔案地址生成proto檔案
這裡需要大家配置一個環境變數
![在這裡插入圖片描述](https://img-blog.csdnimg.cn/20200526155549762.png)
命令如下
在PwwerShell獲取VS控制檯執行以下命令
> dotnet grpc add-url proto檔案的url(公網可訪問) -o 檔案生成的地址
如果大家有其他的生成需求 [可點選](https://www.bookstack.cn/read/asp/33ca5c9d92c28fe9.md) 跳轉到具體頁面檢視詳細介紹
這裡面的需要的tools檔案我已上傳到百度網盤,連結會在文末給出,如果大家需要,自行下載
>tools檔案下載地址:
>連結:https://pan.baidu.com/s/1Vc7FW1w3dX_ZNsbUbh62vQ
>提取碼ari6
> 如有哪裡講得不是很明白或是有錯誤,歡迎指正
如您喜歡的話不妨點個贊收藏一下吧