ToB企服应用市场:ToB评测及商务社交产业平台
标题:
.NET CORE 之 gRPC使用
[打印本页]
作者:
盛世宏图
时间:
2023-11-2 18:32
标题:
.NET CORE 之 gRPC使用
gRPC简单介绍
gRPC 是一种与语言无关的高性能远程过程调用 (RPC) 框架(google开源的rpc框架)。gRPC 默认使用 protocol buffers,这是 Google 开源的一套成熟的结构数据序列化机制(也可以使用其他数据格式如 JSON)
gRPC 的主要优点是:
HTTP2传输
现代高性能轻量级 RPC 框架。
协定优先 API 开发,默认使用协议缓冲区,允许与语言无关的实现。
可用于多种语言的工具,以生成强类型服务器和客户端。
支持客户端、服务器和双向流式处理调用。
使用 Protobuf 二进制序列化减少对网络的使用。
这些优点使 gRPC 适用于:
效率至关重要的轻量级微服务。
需要多种语言用于开发的系统。
需要处理流式处理请求或响应的点对点实时服务。
支持语言
https://grpc.io/docs/languages/
Protobuf
Proto3对应各语言
类型
Proto3 参考:
https://developers.google.com/protocol-buffers/docs/proto3
Proto2 参考:
https://developers.google.com/protocol-buffers/docs/proto
除以上类型,还可以自定义类型
可null类型(google扩展包)
需要导入google.protobuf 包
import "google/protobuf/wrappers.proto"
google.protobuf 包内容
创建.Net Core gRpc Server项目
运行环境:Window10 ,Visual Studio 2019, Net Core 3.1
创建成功后,项目自动生成Protos文件与Services
注意几个点
1.
一个proto文件对应一个Service服务
2.
注入
services.AddGrpc();
当新增一个proto文件和Service服务后,添加以下对应注入
app.UseEndpoints(endpoints => {
endpoints.MapGrpcService();
});
3.
NuGet包引入
Grpc.AspNetCore
Grpc.Tools
Google.Protobuf
4.
指定Protobuf服务端
默认情况下,会为 Protobuf项组中每个 .proto 文件都生成服务器和客户端资产。 若要确保服务器项目中仅生成服务器资产,请将 GrpcServices 属性设置为 Server。
多个proto时,可配置Protos\*.proto
5.
自动生成代码
根据proto文件自动生成.net 代码,当前项目obj\Debug\netcoreapp3.1目录下
Proto文件语法说明
我们习惯把通用的单独定义一个common.proto文件,然后通过import方式导入使用,包名.消息名; 集合类型定义使用repeated,枚举类型定义 enum
greeter.proto
common.proto
创建.Net Core gRpc Client项目
1.
创建项目
这里创建一个单元测试项目来做client调用
2.
拷贝
Protos
把Service项目的Protos整个目录拷贝到项目根目录下
3.
NuGet包引入
Grpc.AspNetCore
Grpc.Tools
Google.Protobuf
4.
.csproj配置
确保服务器项目中仅生成客户端资产,请将 GrpcServices 属性设置为 Client。
5.
添加
UnitTest1.cs 单元测试
gRpc使用Http2传输,设置https调用
AppContext.SetSwitch("System.Net.Http.SocketsHttpHandler.Http2UnencryptedSupport", true);
GreeterClient 为proto文件自动生成的客户端资产
gRPC 调试
传统方式
启动Server 与 Client 两个项目,右键解决方案属性 进行设置
命令模式
运行-> cmd -> F:
切换到Client项目目录:cd F:\demo\gRPCDemo\TestProjectUnitDemo
执行命令:dotnet test --filter 类名.方法
例如:dotnet test --filter UnitTest1.GetById
结束 OVER
参考学习地址
https://grpc.io/docs/what-is-grpc/introduction/
https://docs.microsoft.com/zh-cn/aspnet/core/grpc/?view=aspnetcore-3.1
https://docs.microsoft.com/zh-cn/aspnet/core/grpc/protobuf?view=aspnetcore-3.1#scalar-value-types
https://github.com/grpc/
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/)
Powered by Discuz! X3.4