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

KAnts發表於2016-06-22

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

相關文章