共计 885 个字符,预计需要花费 3 分钟才能阅读完成。
最近准备写一个.NET 的管理平台应用在公司,由于存在大量的 Client => Server,Server => Client 的请求需求在加上之前一直接触了解过 RpcClient 组件的开发,所以就造了个新轮子 Rabbit.Rpc。这篇文章也用于介绍这个新组件。
什么是 RPC?
RPC 全称为:Remote Procedure Call Protocol,远程过程调用协议。
用.NET 的技术可以理解为:Remoting、WCF。主要目的就是:实现服务的远程调用、远程执行,当然既然有协议那么其它语言(Java、php 等)还是可以调用基于 RPC 提供出去的服务。
Rabbit.Rpc 项目情况
说来惭愧,Rabbit.Rpc 我只开发了两三天,主要想先能用,后续在迭代,因为.NET 管理平台等不起那么久。所以目前不推荐正式应用在商业项目中,但如果你只是用来研究或一些私人的小项目还是可以集成使用的,毕竟它很简单,代码量也不多。它 采用了开源的 通信框架:DotNetty。
开源地址:https://github.com/RabbitTeam/Rpc
优点
- 无侵入性,集成简单
- 像调用普通接口一样调用远程服务
- 易扩展
- 开源
特色功能
- 运行时客户端代理生成(基于 Roslyn)
- 客户端代理预生成(基于 Roslyn)
- 抽象的服务协调配置
下一步
- 客户端负载均衡
- Zookeeper 等第三方协调服务
- 日志集成
- 本地回环调用(开发时不需要请求到服务端等情况)
- 更高的性能
- Protocol Buffer序列化器
- .NET Core 适配
- ……
Examples
目的:远程调用服务,客户端不关闭的情况下更新业务逻辑。
- 添加一个简单的服务接口和实现。
- 客户端代码(运行时生成代理):
- 服务端代码:
- 运行服务端(会自动生成路由配置)、再运行客户端
- 修改业务逻辑
- 重新运行服务端后在在原来的客户端中尝试发起请求
客户端代码生成器
- 将你含有接口定义的 dll 放到“assemblies”目录下
- 运行客户端代理生成器
- 选择相应功能
- 去指定目录查看
- 使用
本文永久更新链接地址:http://www.linuxidc.com/Linux/2016-11/137007.htm
正文完
星哥玩云-微信公众号