abp vnext 动态C# API客户端使用笔记
也许个人理解能力有限,总感觉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客户端代理功能了。
更高级的用法还是要看官方文档,特别是多个远程服务端点。