目录
cola地址
https://github.com/alibaba/COLA/
分层
注意下面所说的层都是一个个maven模块
Controller层是可选的
version 1
Domain就是领域,充血对象,核心逻辑
Infrastructure层: db,redis,rpc,mq
version 2 【依赖倒置】
通过引入gateway防腐层来实现依赖倒置,解藕domain和infrastructure层
这样做的好处
解藕domain和infrastructure
底层变了,domain完全无感,比如替换数据库等
domain和infrastructure层可以并行开发,完全不影响
依赖倒置原则:
- 高层模块不应该依赖低层模块,两者都应该依赖抽象
- 抽象不应该依赖细节
- 细节应该依赖抽象
cola demo项目依赖
重构实践
重构一期,只重构一部分,对外暴露的api还没动
简化下就算下图这样,在inf层依赖cola
重构二期
流程基于cola重构
重构目前整体模块依赖关系
core是对外暴露接口的实现,core和service模块可以考虑往app里迁
由于历史原因,core-api暴露接口,按规范的话应该在client,这个都是小问题,无所谓的事
那么目前client模块只放了cmd,感觉没什么必要,也有建议说新功能接口直接暴露在client
cmd就是命令,命令驱动域行为
命令驱动域的行为,可以说一个命令对应域的一个能力
domain和infrastructure层也通过gateway依赖倒置解藕
domain 就写充血对象,实现核心逻辑
inf就写数据库缓存调rpc等
可能后期的演进过程
可以把core慢慢全移到app
main只依赖app
app依赖core-api 还是那个问题,
由于历史原因是core-api暴露接口,感觉client在没啥用,全切也不现实,还不如直接干掉
最终
参考资料
https://blog.csdn.net/significantfrank/article/details/100074716
转载请注明:汪明鑫的个人博客 » 领域驱动设计菜鸟 cola实践篇
说点什么
您将是第一位评论人!