也許個人理解能力有限,總感覺abp vnext的官方文檔,看起來特別費勁。
特別是動態客戶端代理,雖然功能很強大,可我越看越迷糊。經過自己多次測試終於成功,特此記錄下來,方便以后查閱。
寫這篇文章時的最新版本:4.3.0。
首先做個假設,有兩個解決方案:權限(Permission) 和 測試(Test)。我要的效果是在測試解決方案上通過動態代理訪問權限解決方案的接口。
我們看官方文章目錄:https://docs.abp.io/zh-Hans/abp/latest/API/Dynamic-CSharp-API-Clients#客戶端代理生成
服務接口
客戶端代理生成*********************************************************
Endpoint配置
使用
IHttpClientProxy接口
配置
AbpRemoteServiceOptions
多個遠程服務端點
作為默認服務
文章目錄中的“服務接口”和“客戶端代理生成”,其實都是在說權限解決方案。
下面的“Endpoint配置”、“使用”、“IHttpClientProxy接口”、‘“配置”、“AbpRemoteServiceOptions”、“多個遠程服務端點”、“作為默認服務”是在說測試解決方案。
其實權限解決方案幾乎啥都不需要做,保持默認就行。只要保證Application項目中的IXxxAppService繼承IRemoteService接口,而且要在IXxxAppService中定義需要暴漏的方法。
下圖中沒看到IRemoteService,而是看到了IApplicationService,其實IApplicationService繼承了IRemoteService接口。
而測試解決方案需要修改以下幾個文件:
1.LS.Test.HttpApi.Host項目中的appsettings.json文件,根節點添加如下代碼:
"RemoteServices": { "Default": { "BaseUrl": "http://localhost:5001/" } }
2.LS.Test.Application項目引用權限解決方案的LS.Permission.HttpApi.Client項目編譯后的dll。測試階段,我使用程序集引入的方式(需要拿出來單獨放在一個文件夾內再引用)。
3.LS.Test.Application項目中,構造方法添加對權限解決方案某接口的引用,例如:
4.LS.Test.Application項目中TestApplicationModule,添加對權限解決方案客戶端代理:PermissionHttpApiClientModule模塊的依賴。
好了,這樣就可以愉快的使用abp vnext的動態c# api客戶端代理功能了。
更高級的用法還是要看官方文檔,特別是多個遠程服務端點。