一个开源的强类型客户端(.NET 中的 Open Fegin)— Rabbit Go
在做RabbitCloud(之前是一个RPC,现在是一个微服务框架)的时候往往避不开客户端代理,之前把这些客户端代理都算作服务框架不可缺少的一部分,随着后期的深入发现这些客户端代理其实可以互通,类似spring cloud 的 open fegin。
因为它们最终的行为就是构建一个message进行编码,发送,然后解码服务端的返回信息。在阅读open fegin的源码之后写了Rabbit Go。
一个简单的客户端
调用示例
最新的样本:https://github.com/RabbitTeam/go/tree/master/samples
发生了什么?
我们使用fiddler来监听请求信息。
GetAsync
DeleteAsync
PostAsync
PutAsync
特性
- 丰富的拦截器(IAsyncRequestInterceptor、IAsyncExceptionInterceptor)
- 可替换的编解码器(默认为json,使用 Newtonsoft.Json)
- 全局拦截器
- 全局模型公约
- 良好的抽象与实现拆分(易扩展)
- url支持模板
- 可扩展的请求程序(目前只有HttpGoClient)
- 不只为HTTP(未来会添加对Grpc、dubbo等服务提供者的实现)
项目信息
源码地址:https://github.com/RabbitTeam/go
NuGet:https://www.nuget.org/packages/Rabbit.Go.Core
基于 Rabbit Go 的客户端
源码地址:DingTalk(钉钉开放平台)
用在生产的GoClient定义
书籍评论服务
账号服务
ps:生产项目集成了RabbitCloud,实现了服务发现、重试、负载均衡。每次调用过程中的 comment,user 会根据一定的策略自动解析成对应服务的真实ip地址和端口进行调用。
RabbitCloud还是一个实验性项目,目前只放出了源码,并没有任何集成文档。
开源地址:https://github.com/rabbitteam/rabbitcloud/tree/dev
接下来
- 在不使用DI的情况下使用
- 提供服务发现、重试、限流、断路器的支持(集成 Rabbit Cloud)
- 提供对Grpc的调用支持
- 提供对dubbo的调用支持
写在最后
.NET技术栈QQ群:384413261(点击加入 .NET Group)
原文地址:https://www.cnblogs.com/ants/p/8445965.html
相关推荐
-
【Lua】简单json互转table C#
2019-10-11
-
C#克隆 C#
2019-9-18
-
asp.net core web api 生成 swagger 文档 C#
2019-8-29
-
ASP.NET Core实现对象自动映射-AgileMapper C#
2019-10-3
-
在DevExpress程序中使用PopupContainerEdit和PopupContainer实现数据展示 C#
2019-5-17
-
基于Win10极简SonarQube C#代码质量分析 C#
2019-5-15
-
基于任务的异步编程模式(TAP)的错误处理,基于任务的异步编程模式(TAP) C#
2019-9-18
-
Asp.net SignalR 应用并实现群聊功能 开源代码 C#
2019-5-12
-
Parallel线程安全问题 C#
2019-7-23
-
[译]聊聊C#中的泛型的使用(新手勿入) C#
2019-4-3