ABP VNext从单体切换到微服务 (3)

依据上下文映射关系,对处于下游的Order承载体增加对上游Product的依赖,在Order承载体中增加对Product模块中Application.Contracts层的依赖。并在服务配置中完成依赖(第7行)。

[DependsOn(     typeof(AbpAutofacModule),     typeof(AbpAspNetCoreMvcModule),     typeof(AbpAspNetCoreMultiTenancyModule),     typeof(OrderManagementApplicationModule),     typeof(OrderManagementEntityFrameworkCoreModule),     typeof(ProductManagementApplicationContractsModule)     )] public class OrderServiceHostModule : AbpModule { ... }

配置远程服务代理,在服务配置中设置从Order承载体到Product承载体的远程服务请求。在Order承载体中增加Volo.Abp.Http.Client包并在服务配置中完成依赖。

[DependsOn(     ...     typeof(AbpHttpClientModule), ...     )] public class OrderServiceHostModule : AbpModule {     public override void ConfigureServices(ServiceConfigurationContext context)     {         var configuration = context.Services.GetConfiguration(); ...    context.Services.AddHttpClientProxies( typeof(ProductManagementApplicationContractsModule).Assembly);         ...     } }

在配置源appsettings文件中加入对Product承载体的远程调用地址

 { "RemoteServices": {   "Default": {     "BaseUrl": "http://localhost:57687"   } }

更改项目配置,启动多个文件,一并启动三个独立承载体,再次调用Order中的Get请求,同样获得了从Product上下文的应用服务中的数据

图片

这次采用的不同进程间的承载方式,通过防腐层,然后经ABP提供的Http代理服务调用Product承载体,可以断点查看当前在防腐层中的AppService类型,已经不再是直接使用ProductAppService了。

图片

真香

从大单体承载切换多服务承载,Modules部分不需要做任何更改,着实方便。至于内部的远程调用,本身ABP VNext还存在一些问题像类似集合的Get请求在3.1的版本中才做了修复,但是这丝毫不影响这一巨人的前行。

码云仓库

2020-09-26,望技术有成后能回来看见自己的脚步

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wpjgsd.html