一个开源的强类型客户端(.NET 中的 Open Fegin)— Rabbit Go
在做RabbitCloud(之前是一個RPC,現在是一個微服務框架)的時候往往避不開客戶端代理,之前把這些客戶端代理都算作服務框架不可缺少的一部分,隨著后期的深入發現這些客戶端代理其實可以互通,類似spring cloud 的 open fegin。
因為它們最終的行為就是構建一個message進行編碼,發送,然后解碼服務端的返回信息。在閱讀open fegin的源碼之后寫了Rabbit Go。
一個簡單的客戶端
調用示例
最新的樣本:https://github.com/RabbitTeam/go/tree/master/samples
發生了什么?
我們使用fiddler來監聽請求信息。
GetAsync
DeleteAsync
PostAsync
PutAsync
特性
豐富的攔截器(IAsyncRequestInterceptor、IAsyncExceptionInterceptor)
可替換的編解碼器(默認為json,使用 Newtonsoft.Json)
全局攔截器
全局模型公約
良好的抽象與實現拆分(易擴展)
url支持模板
可擴展的請求程序(目前只有HttpGoClient)
不只為HTTP(未來會添加對Grpc、dubbo等服務提供者的實現)
項目信息
源碼地址:https://github.com/RabbitTeam/go
NuGet:https://www.nuget.org/packages/Rabbit.Go.Core
基于 Rabbit Go 的客戶端
源碼地址:DingTalk(釘釘開放平臺)
用在生產的GoClient定義
書籍評論服務
賬號服務
ps:生產項目集成了RabbitCloud,實現了服務發現、重試、負載均衡。每次調用過程中的 comment,user 會根據一定的策略自動解析成對應服務的真實ip地址和端口進行調用。
RabbitCloud還是一個實驗性項目,目前只放出了源碼,并沒有任何集成文檔。
開源地址:https://github.com/rabbitteam/rabbitcloud/tree/dev
接下來
在不使用DI的情況下使用
提供服務發現、重試、限流、斷路器的支持(集成 Rabbit Cloud)
提供對Grpc的調用支持
提供對dubbo的調用支持
寫在最后
.NET技術棧QQ群:384413261(點擊加入?.NET Group)
原文地址:?https://www.cnblogs.com/ants/p/8445965.html?
.NET社區新聞,深度好文,歡迎訪問公眾號文章匯總 http://www.csharpkit.com
總結
以上是生活随笔為你收集整理的一个开源的强类型客户端(.NET 中的 Open Fegin)— Rabbit Go的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: .NET/.NET Core中更清晰的堆
- 下一篇: .NET Core 实现定时抓取博客园首