DDD开源COLA应用架构-实现分离业务逻辑和技术细节
COLA(Clean Object-oriented & Layered Architecture)架构是阿里团队自主研发的应用架构,目前已经开源( https://github.com/alibaba/COLA )。
在COLA的设计中,充分汲取了经典架构的优秀思想。除此之外,阿里补充了规范设计和扩展设计,并且使用Archetype的方式,将架构固化下来,以便可以快速地在开发中使用。
![](https://img2020.cnblogs.com/blog/1395/202107/1395-20210727202154744-1325679724.png)
分层设计(Layered Architecture)
COLA的分层是一种改良了的三层架构。主要是将传统的业务逻辑层拆分成应用层、领域层和基础实施层。如下图所示,左边是传统的分层架构,右边是COLA的分层架构。
![](https://img2020.cnblogs.com/blog/1395/202107/1395-20210727202154783-1858175560.png)
其每一层的作用范围和含义如下:
1)展现层(Presentation Layer):负责以REST的格式接受Web请求,然后将请求路由给Application层执行,并返回视图模型(View Model),其载体通常是DTO(Data Transfer Object);
2)应用层(Application Layer):主要负责获取输入,组装上下文,做输入校验,调用领域层做业务处理,如果需要的话,发送消息通知。当然,层次是开放的,若有需要,应用层也可以直接访问基础实施层;
3)领域层(Domain Layer):主要是封装了核心业务逻辑,并通过领域服务(Domain Service)和领域实体(Entities)的函数对外部提供业务逻辑的计算和处理;
4)基础实施层(Infrastructure Layer)主要包含Tunnel(数据通道)、Config和Common。这里阿里使用Tunnel这个概念来对所有的数据来源进行抽象,这些数据来源可以是数据库(MySQL,NoSql)、搜索引擎、文件系统、也可以是SOA服务等;Config负责应用的配置;Common是通用的工具类。
![](https://img2020.cnblogs.com/blog/1395/202107/1395-20210727202043521-1591035246.png)
![](https://img2020.cnblogs.com/blog/1395/202107/1395-20210727202055127-1934877258.png)