.NET輕量級RPC框架:Rabbit.Rpc


    最近准備寫一個.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

優點

  1. 無侵入性,集成簡單
  2. 像調用普通接口一樣調用遠程服務
  3. 易擴展
  4. 開源

特色功能

  1. 運行時客戶端代理生成(基於Roslyn)
  2. 客戶端代理預生成(基於Roslyn)
  3. 抽象的服務協調配置

下一步

  1. 客戶端負載均衡
  2. Zookeeper等第三方協調服務
  3. 日志集成
  4. 本地回環調用(開發時不需要請求到服務端等情況)
  5. 更高的性能
  6. Protocol Buffer序列化器
  7. .NET Core適配
  8. ……

Examples

目的:遠程調用服務,客戶端不關閉的情況下更新業務邏輯。

  • 添加一個簡單的服務接口和實現。

image

  • 客戶端代碼(運行時生成代理):

image

  • 服務端代碼:

image

  • 運行服務端(會自動生成路由配置)、再運行客戶端

image

  • 修改業務邏輯

image

  • 重新運行服務端后在在原來的客戶端中嘗試發起請求

image

客戶端代碼生成器

  • 將你含有接口定義的dll放到“assemblies”目錄下

      image

  • 運行客戶端代理生成器

    image

  • 選擇相應功能

    2D956998BE604D69885F754DE0C0CA87[6]

  • 去指定目錄查看

     image

  • 使用

    image

交流方式

QQ群:384413261(RabbitHub)

Email:majian159@live.com


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM