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