.Net Core微服务rpc框架GRPC通信的方法是什么

发布时间:2022-01-11 13:32:37 作者:iii
来源:亿速云 阅读:114

本文小编为大家详细介绍“.Net Core微服务rpc框架GRPC通信的方法是什么”,内容详细,步骤清晰,细节处理妥当,希望这篇“.Net Core微服务rpc框架GRPC通信的方法是什么”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。

什么是rpc?

rpc,全称Remote Procedure Call,通过它,你可以像调用本地方法一样调用远程服务。前端可以调用后端方法,后端也可以调用前端方法。其实这个概念并不陌生,上一篇关于web实时应用的文章也提到了这个概念,并实现了前后端互调的操作。

在正式开始使用grpc之前,我们还需要掌握protocol buffer的概念。

什么是grpc?

grpc来自大名鼎鼎的谷歌,孵化于CNCF基金会(docker、k8s同样出自这个基金会)。它是一款高性能、开源、通用的rpc框架,你可以通过它来定义rpc的请求和响应。它基于http/2,全双工通信、低延迟、高效率、支持流、可轻松的插入身份认证、负载均衡、监控日志等等等等。。。关键是它还可以跨语言操作。只要server端或client端是它支持的语言编写,都可以跨语言操作。官方支持的开发语言:

.Net Core微服务rpc框架GRPC通信的方法是什么

为什么用protocol buffer?

因为grpc采用合约优先的API开发模式,默认采用protocol buffer作为接口设计语言,我们可以在proto文件里定义消息和服务。当然,作为默认选项,它自然是有优势的,主要是这些:

了解完基础以后,先上一个小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";}

解读一下:

编译proto

proto编译的主要目的是生成代码。

首先是工具,点击这里,选出适合自己系统的插件,如图:

.Net Core微服务rpc框架GRPC通信的方法是什么

下载完以后随便找个目录解压,然后把其中的bin目录添加到环境变量里:

.Net Core微服务rpc框架GRPC通信的方法是什么

如果在控制台输入protoc可以看到一堆信息弹出来,就表示安装成功了:

.Net Core微服务rpc框架GRPC通信的方法是什么

在我们使用protoc把proto文件编译成c#文件之前,我们还需要做这些:

可以用rotoc --IPath(或--proto_path)或者直接打开控制台转到protoc安装目录。

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

上面的cs是我新建的文件夹名(这个文件夹是建立在proto项目目录下的),grpcApi.proto是自建的proto文件,执行结果见图:

.Net Core微服务rpc框架GRPC通信的方法是什么

成功以后会在指定的目录下生成cs文件,见图:

.Net Core微服务rpc框架GRPC通信的方法是什么

生成的文件和proto文件命名一样,只不过首字母会自动大写,打开看看:

.Net Core微服务rpc框架GRPC通信的方法是什么

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

不过有一点千万注意:这个cs文件不要手动改,不要手动改,不要手动改!

读到这里,这篇“.Net Core微服务rpc框架GRPC通信的方法是什么”文章已经介绍完毕,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注亿速云行业资讯频道。

推荐阅读:
  1. python使用rpc框架gRPC的方法
  2. .Net Core中如何使用Grpc

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

core grpc

上一篇:如何分析J2EE体系架构设计中的会话面和数据访问对象

下一篇:MybatisPlus LambdaQueryWrapper使用int默认值的坑及解决方法是什么

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》