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 添加一个简单的协议
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的控制台,安装以上介绍的四个类库
项目右键点击添加-->服务引用

选择浏览找到我们刚刚添加的proto文件 将选择要生成的类的类型选"客户端"

点击确定 第一种就完成了
通过Nuget包添加引用
这种在公司项目中比较推荐使用的(前提是已经有了私有nuget库)
找到我们刚刚新增的GRpc.Proto项目,右键属性,找到打包,填写相对应的信息,一定要勾选在构建会生成Nuget包

重新生成之后就可以在项目debug目录下看到对应的nuget包了,推送到私有的nuget库就可以了
直接通过Proto文件引用
在项目下新建一个文件Until,将上面的HelloWord.Proto文件放在新建的文件下,右键点击HelloWord.Proto的属性

生成操作选择ProtoBuf conpiler
会出现一个新的属性:如下

此时我们选择Client only
客户端就生成好了
通过url添加引用
项目右键点击添加-->服务引用

选择Url(一定要公网可以访问,如果是在github上的一定要有如下的操作)

点击Raw

使用这个路径 才可以成功
通过地址生成Proto文件引用
这种方式其实和上面一种方式的用法差不多,但是感觉还是需要写一些。万一大家哪天需要用到呢
这种方法是通过donnet命令和proto文件地址生成proto文件
这里需要大家配置一个环境变量

命令如下
在PwwerShell获取VS控制台执行以下命令
dotnet grpc add-url proto文件的url(公网可访问) -o 文件生成的地址
如果大家有其他的生成需求 可点击 跳转到具体页面查看详细介绍
这里面的需要的tools文件我已上传到百度网盘,链接会在文末给出,如果大家需要,自行下载
tools文件下载地址:
链接:https://pan.baidu.com/s/1Vc7FW1w3dX_ZNsbUbh62vQ
提取码ari6
如有哪里讲得不是很明白或是有错误,欢迎指正
如您喜欢的话不妨点个赞收藏一下吧
GRpc添加客户端的四种方式的更多相关文章
- SWT组件添加事件的四种方式
在我们CS日常开发过程中会经常去为组件添加事件,我们常用的为AWT与SWT.SWT的事件模型是和标准的AWT基本一样的.下面将按照事件的四种写法来实现它. 一.匿名内部类的写法 new MouseAd ...
- 给TextView添加超链接的四种方式
因为在上上篇博客中介绍了SpannableString的使用(SpannableString使用详解),由此想到给TextView添加超链接究竟有多少种方式?经过个人总结,现在一共发现四种,如果还有其 ...
- Java添加事件的四种方式
Java添加事件的几种方式(转载了codebrother的文章,做了稍微的改动) /** * Java事件监听处理——自身类实现ActionListener接口,作为事件监听器 * * @author ...
- css添加样式的四种方式
1. 导入样式:在 .css文件中使用@import url("...")来引入另一个css样式表 2. 外部样式:在html页面中的head中使用 link 标签引入,如< ...
- iOS 登陆的实现四种方式
iOS 登陆的实现四种方式 一. 网页加载: http://www.cnblogs.com/tekkaman/archive/2013/02/21/2920218.ht ml [iOS登陆的实现] A ...
- 实现web数据同步的四种方式
http://www.admin10000.com/document/6067.html 实现web数据同步的四种方式 1.nfs实现web数据共享 2.rsync +inotify实现web数据同步 ...
- .net core 2.x - 缓存的四种方式
其实这些微软docs都有现成的,但是现在的人想对浮躁些,去看的不会太多,所以这里就再记录下 ,大家一起懒一起浮躁,呵呵. 0.基础知识 通过减少生成内容所需的工作,缓存可以显著提高应用的性能和可伸缩性 ...
- linux下实现web数据同步的四种方式(性能比较)
实现web数据同步的四种方式 ======================================= 1.nfs实现web数据共享2.rsync +inotify实现web数据同步3.rsyn ...
- 【Java EE 学习 80 下】【调用WebService服务的四种方式】【WebService中的注解】
不考虑第三方框架,如果只使用JDK提供的API,那么可以使用三种方式调用WebService服务:另外还可以使用Ajax调用WebService服务. 预备工作:开启WebService服务,使用jd ...
随机推荐
- GCD-Euclidean Algorithm
求解两个正整数的最大公约数(Greatest Common Devisor),可以采用循环进行遍历,不过效率很低.所以引入欧几里得算法(Euclid's algorithm). 欧几里得算法基于GCD ...
- POJ 3241Object Clustering曼哈顿距离最小生成树
Object Clustering Description We have N (N ≤ 10000) objects, and wish to classify them into several ...
- Linux中的程序和进程,PID和PPID
环境:Vmware Workstation:CentOS-6.4-x86_64 程序和进程: 1.程序:程序是静止的,程序就是磁盘上的一个文件. 2.进程:进程是一个正在执行的程序的实例. 3.进程是 ...
- VMware15.5.0安装MacOS10.15.0系统 安装步骤(下)
VMware15.5.0安装MacOS10.15.0系统安装步骤(下)超详细! 接上文第5条如果没看过上篇的话传送门:https://www.cnblogs.com/Top-chen/p/128024 ...
- andorid jar/库源码解析之Dagger/Dagger2
目录:andorid jar/库源码解析 Dagger.Dagger2: 作用: 1.用于解耦Activity和业务逻辑 2.在使用业务的时候,不需要重复编写new代码. 3.当业务变化的时候,不需要 ...
- 2018 USP-ICMC
简单题 B D F L 中等难度题 E I 更难一点得题 A C G 难题 H K J B. Ugly Number 这个题目很简单,不过我的方法有点点小问题,不过可以改进一下就应该没什么问题了. 这 ...
- Spring Boot在Controllder中常用注解
1.@RestController @RestController 相当于@Controller+@ResponseBody 注解如果使用@RestController 注解Controller 中的 ...
- docker redis shell
docker中安装好redis后,运行 docker ps 指令,查看所有运行中的镜像信息 然后运行 docker inspect --format "{{ .State.Pid}}&quo ...
- linux centos7搭建mysql-5.7.29
1. 下载mysql 1.1 下载地址 https://downloads.mysql.com/archives/community/ 1.2 版本选择 2. 管理组及目录权限 2.1 解压my ...
- 数学建模(二)优劣解距离法Topsis模型部分
步骤: (一)统一指标类型:指标正向化(转化为极大型)(论文) 越大越好极大型指标,效益型指标 越小越好极小型指标,成本型指标 max-x,max=max{xi} 落在某个区间[a,b]是最好的,区间 ...