Welcome everyone

领域驱动设计菜鸟 cola实践篇

领域驱动设计 汪明鑫 2189浏览 0评论

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实践篇

喜欢 (0)

说点什么

您将是第一位评论人!

提醒
avatar
wpDiscuz