最近准備寫一個.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”目錄下
- 運行客戶端代理生成器
- 選擇相應功能
- 去指定目錄查看
- 使用
交流方式
QQ群:384413261(RabbitHub)
Email:majian159@live.com