COLA
COLA 是 Clean Object-Oriented and Layered Architecture的缩写,代表“整洁面向对象分层架构”,是来自阿里技术专家的开源项目。目前COLA已经发展到COLA 4.0。 COLA既是框架,也是架构。开源作者创建COLA的主要目的是为DDD应用架构提供一套简单的可以复制、可以理解、可以落地、可以控制复杂性的“指导和约束”。 COLA 开源地址:https://github.com/alibaba/COLA。
COLA 概述
架构的意义就是要素结构:
- 要素是组成架构的重要元素
- 结构是要素之间的关系
而应用架构的意义就在于
- 定义一套良好的结构
- 治理应用复杂度,降低系统熵值
- 从随心所欲的混乱状态,走向井井有条的有序状态
COLA架构就是为此而生,其核心职责就是定义良好的应用结构,提供最佳应用架构的最佳实践。通过不断探索,我们发现良好的分层结构,良好的包结构定义,可以帮助我们治理混乱不堪的业务应用系统。
好的应用架构,都遵循一些共同模式,不管是六边形架构、洋葱圈架构、整洁架构、还是COLA架构,都提倡以业务为核心,解耦外部依赖,分离业务复杂度和技术复杂度等。
COLA架构如下:
- 适配层(Adapter Layer):负责对前端展示(web,wireless,wap)的路由和适配,对于传统B/S系统而言,adapter就相当于MVC中的controller;
- 应用层(Application Layer):主要负责获取输入,组装上下文,参数校验,调用领域层做业务处理,如果需要的话,发送消息通知等。层次是开放的,应用层也可以绕过领域层,直接访问基础实施层;
- 领域层(Domain Layer):主要是封装了领域模型和核心业务逻辑,并通过领域服务(Domain Service)和领域对象(Domain Object)的方法对Application层提供业务实体和业务逻辑计算。领域是应用的核心,不依赖任何其他层次;
- 基础实施层(Infrastructure Layer):主要负责技术细节问题的处理,比如数据库的CRUD、搜索引擎、文件系统、分布式服务的RPC等。此外,领域防腐的重任也落在这里,外部依赖需要通过gateway的转义处理,才能被上面的Application层和Domain层使用。