COLA

GitHub

阿里云应用生成器

1. 介绍

COLA 是 Clean Object-Oriented and Layered Architecture的缩写,代表“整洁面向对象分层架构”。COLA分为两个部分,COLA架构和COLA组件。是阿里巴巴实践的产物。

架构意义 就是 要素结构:

  • 要素 是 组成架构的重要元素;
  • 结构 是 要素之间的关系。

应用架构意义 就在于

  • 定义一套良好的结构;
  • 治理应用复杂度,降低系统熵值;
  • 从随心所欲的混乱状态,走向井井有条的有序状态。

COLA V4结构图

cola
Image
image.png
Image
demo
Image
层次 包名 功能 必选
Adapter层 web 处理页面请求的Controller
Adapter层 wireless 处理无线端的适配
Adapter层 wap 处理wap端的适配
App层 executor 处理request,包括command和query
App层 consumer 处理外部message
App层 scheduler 处理定时任务
Domain层 model 领域模型
Domain层 ability 领域能力,包括DomainService
Domain层 gateway 领域网关,解耦利器
Infra层 gatewayimpl 网关实现
Infra层 mapper ibatis数据库映射
Infra层 config 配置信息
Client SDK api 服务对外透出的API
Client SDK dto 服务对外的DTO

以业务为核心,解耦外部依赖,分离业务复杂度和技术复杂度。

  • Adapter 适配层:对前端展示的路由和适配。 VO:返回给前端的对象 assembler:将 responseDTO 转换为 VO web:处理页面请求的 Controller wap:处理手机端请求的 Controller
  • Application 应用层:负责获取输入,组装上下文,调用领域层做业务流程编排,如果需要的话,发送消息通知等。若只是简单操作,应用层还可直接绕过领域层,访问基础层。避免在 Application 层做入参校验,可以通过 JSR303/380 和 Spring Validation 来前置校验。如何判断是否属于业务流程:不要有 if/else 分支逻辑,除非是 if 条件对象判空返回或者抛异常终止。 DTO:数据转换对象,只是为了和外部交互,所以本身不包含任何逻辑,属于贫血对象,包括 req 请求 DTO 和 res 响应 DTO converter:实现 dto 与 model 之间转换或 dto 与 po 之间转换 consumer:处理外部消息通知,比如 MQ 消息 executor:处理 request,包括 command 和 query 两种(一般可用 CmdExe 表示) scheduler:处理定时任务 rpc:实现 Client 中供外部调用的 Facade 接口,FacadeImpl
  • Client:封装 sdk 供外部调用 api:供外部调用的 Facade 接口 DTO:供外部使用的接口对应的 DTO enums:枚举类
  • Domain 领域层:封装核心业务逻辑,并通过领域服务(Domain Service)和领域对象(Domain Entity)向 App 层提供业务逻辑计算和业务实体。领域是应用的核心,不依赖其他任何层次。 model:领域模型,包含数据和行为 gateway:领域网关,与外部解耦利器 ability:领域能力,包括 DomainService,当某个行为影响到多个 Entity 时,属于跨实体的业务逻辑,在这种情况下就需要 DomainService 来完成,即业务需要涉及到多个 gateway
  • Infrastructure 基础实施层:处理技术细节,比如数据库 CRUD、搜索引擎、文件系统等,领域防腐的重任也落在这层,通过调用外部接口获取到的外部对象转换为实际 Domain 层所定义的对象模型,从而不直接使用外部对象。 PO:与数据库表一一映射关系,每个字段对应数据库表的一个 column,PO 只有数据,没有行为 factory:model 与 po 之间转换 mapper:数据库映射,持久化操作 common:工具包 gatewayImpl:网关实现

2. 使用

2.1. Archtype

COLA提供了两个archtype。位于cola-archetypes目录下:

  1. cola-archetype-service:用来创建纯后端服务的archetype
  2. cola-archetype-web:用来创建adapter和后端服务一体的web应用archetype

2.2. COLA组件

组件名称 功能 版本 依赖
cola-component-dto 定义了DTO格式,包括分页 1.0.0
cola-component-exception 定义了异常格式, 主要有BizExceptionSysException 1.0.0
cola-component-statemachine 状态机组件 1.0.0
cola-component-domain-starter Spring托管的领域实体组件 1.0.0
cola-component-catchlog-starter 异常处理和日志组件 1.0.0 exceptiondto组件
cola-component-extension-starter 扩展点组件 1.0.0
cola-component-test-container 测试容器组件 1.0.0

2.3. 创建应用

mvn archetype:generate  \
    -DgroupId=com.alibaba.cola.demo.web \
    -DartifactId=demo-web \
    -Dversion=1.0.0-SNAPSHOT \
    -Dpackage=com.alibaba.demo \
    -DarchetypeArtifactId=cola-framework-archetype-web \
    -DarchetypeGroupId=com.alibaba.cola \
    -DarchetypeVersion=4.2.2

或者使用阿里云应用生成器。

Copyright © rootwhois.cn 2021-2022 all right reserved,powered by GitbookFile Modify: 2023-03-05 10:55:52

results matching ""

    No results matching ""