.netcore中使用 GRPC

简介
基于http/2的高性能、跨语言、远程过程调用框架
序列化协议protocol buffers

优点
跨语言

适用场景
高性能轻量经微服务
多语言混合开发的系统
流式处理请求或响应的点对点通信服务

不适用场景
浏览器可访问的api
广播实时通信
进程间通信

protobuf v3
文件后缀.proto
结构
1、syntax="proto3"
2、options
option csharp_namespace =“namespace”
生成类时用户确定在目标代码中哪个命名空间中,便于命名空间引用
2、导入其他proto文件
import "date.proto"
3、package
package my.project; //相当于命名空间
相当于java的命名空间,在C#中无用(只在生成的类中有使用,C#代码中无使用,推测是无用),为grpc底层使用
4、message
定义数据结构
命名规则根据各语言自行定义
建议驼峰命令
注释 //单行注释
字段定义
各字段都有定义自己的位置
repeated 标识字段为一个数组
enum类,表示一定范围内具有相同属性的值
map类型,对应C#字典
字段类型
数值
double,float,int32,int64,uint32,uint64,sint32,sint64,fixed32,fixed64,sfixed32,sfixed64
布尔
ture/false
字符串
长度不超过232
字节
message声名中可使用自己定义的message类型
5、service
定义服务
一个文件有一个service声名,声名中可定义N多方法
stream 修改符表示一个数据流
可加在入参上或者返回值上
应用场景可为传输图片

使用
服务端操作
依赖项
Grpc.Aspnetcore
.proto文件定义后生成类
右键-->属性-->build action (proto complier)-->grpc (选择server/server、client)
扩展项
继承Interceptor 并重写UnaryServerHandler方法,添加对应的拦截逻辑。在AddGrpc时,options注册拦截器
客户端
依赖项
Grpc.Net.Client
Google.Protobuf
Grpc.Tools
属性私有资产
all
声名channel(指定远程地址,配置证书验证方式)-->根据channel声名client-->client调用相关方法
优化项
安装 Grpc.Net.ClientFactory
builder.Services.AddGrpcClient<MyTestDemo.MyTestDemoClient>(option => {
option.Address = new Uri("https://localhost:7245");
});

实现每个客户端在应用中注册,使用时只要注入即可使用

 

posted @   mopheify  阅读(408)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
点击右上角即可分享
微信分享提示