.net gRPC初探 - 从一个简单的Demo中了解并学习gRPC
一、.NET 上的 gRPC 的简介
gRPC 是一种与语言无关的高性能远程过程调用 (RPC) 框架。
gRPC 的主要优点是:
- 现代高性能轻量级 RPC 框架。
- 协定优先 API 开发,默认使用协议缓冲区,允许与语言无关的实现。
- 可用于多种语言的工具,以生成强类型服务器和客户端。
- 支持客户端、服务器和双向流式处理调用。
- 使用 Protobuf 二进制序列化减少对网络的使用。
这些优点使 gRPC 适用于:
- 效率至关重要的轻量级微服务。
- 需要多种语言用于开发的 Polyglot 系统。
- 需要处理流式处理请求或响应的点对点实时服务。
二、从一个简单的Demo中了解并学习gRPC
1、创建gRPC服务端
1)新建一个gRPC项目
2)新建好的初试gRPC项目结构如下
3)proto文件
4) 服务:proto中的方法具体实现
5) proto会自动生成两个类文件,保存proto重新生成即可
6)在项目的工程文件中(.csproj)可以看到此时的文件情况
7)开始自己新建上述文件
① 首先新建一个proto文件
添加新项,选择协议缓冲区文件
② 更改新建proto文件的属性
点击项目初始化的greet.proto文件可以看到其属性
根据初始文件更改我们新建的people.proto文件的属性,注意:生成操作选择[Protobuf compiler]
gRPC Stub Classes 生成操作选择[Server only]
③ 此时,查看工程文件可以看到我们新建文件及其属性设置:和初始文件一样是一个服务器端的协议缓冲区文件
④ 按照greet.proto更改people.proto文件,编写服务,增加一个查询方法,并定义其请求类和响应类
注意:这里的int类型不同于.net代码中的int类型,短整型用int32表示,长整型用int64表示
⑤ 保存并生成people.proto文件,可以看到此时也生成了两个people.proto的类文件
⑥ 实现上述的服务:查询方法
注:这里的People.PeopleBase是由people.proto自动生成的类文件中的基类
⑦ 在Startup.cs中注册我们编写的服务
⑧ 至此,服务端新建完成
2、创建gRPC客户端
1)在解决方案上右键新建一个控制台程序
2)在NuGet程序包管理器中添加如下程序包
3)把服务端的proto文件拷贝过来
4)更改两个proto文件的gRPC Stub Classes属性为[Client only],查看客户端程序的工程文件即可看到更新
5)客户端也生成了两个proto的类文件
6)编写基于https的请求测试代码
7)设置解决方案的多启动项目,使得服务端客户端同时运行
8)运行,查看测试调用结果
至此,gRPC服务与客户端的新建及其简单的调用完成
三、总结
上述内容对gRPC做了一个简单的连接,并根据一个demo学习理解gRPC服务端、客户端的通信,进一步体验这种高性能轻量的内部服务调用模式。
想要更详细全面进一步的学习gRPC,本文在此推荐一个博主写的文章,特别通俗易懂而且全面,
另外,微软官方给出的关于gRPC学习的地址:远程过程调用应用
关于.NET Core整体的学习,作者有一篇文章进行了详细介绍:ASP.NET Core开发者指南(2022版路线图)
希望一起学习,一起进步!
以上就是.net gRPC初探 - 从一个简单的Demo中了解并学习gRPC的介绍,做此记录,如有帮助,欢迎点赞关注收藏!
最新文章
- BZOJ1925[SDOI2010]地精部落
- 算法系列:寻找最大的 K 个数
- Java并发之CyclicBarrier 可重用同步工具类
- weinre 简记
- [转]12款最佳Linux命令行终端工具
- TCP同步传送数据示例(简洁、清楚)
- 115太酷了,居然出了个TV版客户端
- JS cookie 读写操作
- c# 基础连接已经关闭: 连接被意外关闭,错误的解决
- Swift互用性:与 Cocoa 数据类型共舞(Swift 2.0版)-b
- ASP.NET Core 2.1与2.2 SignalR CORS 跨域问题
- LinkedList类 和ArrayList类
- MAC终端神器iterm2——告别黑白
- 终于懂得Perl句柄是什么意思了
- Fetch请求后台的数据
- 面试篇——mysql
- css变换与动画详解
- 近期对招聘Android开发者的一些思考
- redis的其他命令
- elasticsearch 通过外网访问
热门文章
- PGL图学习之图神经网络GNN模型GCN、GAT[系列六]
- (C++) std::move std::forward及使用
- 如何禁止win7自动锁屏
- 实践案例:同程艺龙网的 Dubbo 升级经验总结
- Tekton 设计简介 及 实践
- 笔试面试--Java基础知识
- 24V转5V降压芯片,24V转3.3V的稳压芯片,中文规格书
- 简单的Dos命令学习
- org.springframework.jdbc.BadSqlGrammarException: ### Error querying database. Cause: org.postgresql.util.PSQLException: ERROR: operator does not exist: bigint = character varying
- C语言条件语句中调用函数并赋值时的一个小坑