1. 程式人生 > >GRpc新增客戶端的五種方式

GRpc新增客戶端的五種方式

隨著微服務的發展,相信越來越多的.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 > 如有哪裡講得不是很明白或是有錯誤,歡迎指正 如您喜歡的話不妨點個贊收藏一下吧