COLA

Project Url: alibaba/COLA
Introduction: Clean Object-oriented & Layered Architecture
More: Author   ReportBugs   
Tags:

COLA 是 Clean Object-Oriented and Layered Architecture 的缩写,代表“整洁面向对象分层架构”,也叫“可乐”架构,目前 COLA 已经发展到COLA 2.0 image.png

需要访问 COLA 1.0,请使用 TAG : https://github.com/alibaba/COLA/tree/COLA1.0

关于 COLA 2.0 的更多信息,请关注微信公众号:

qrcode_60.jpg

需要进一步交流的,可以微信咨询:fsxiaodao

项目说明

COLA 既是框架,也是架构。创建 COLA 的主要目的是为应用架构提供一套简单的可以复制、可以理解、可以落地、可以控制复杂性的”指导和约束"。

  • 框架部分主要是以二方库的形式被应用依赖和使用。
  • 架构部分主要是提供了创建符合 COLA 要求的应用 Archetype。

COLA 框架

COLA 作为框架主要是提供应用和架构需要的通用组件支撑,比如对 CQRS 和扩展点功能的支持。COLA 框架主要由 cola-framework 这个项目来实现。 在这个项目里面包含 3 个 Module:cola-core, cola-common 和 cola-test。

cola-core

该 Module 是整个框架的核心,里面的主要功能和 Package 如下:

com
└── alibaba
    └── cola
        ├── assembler  \\提供 Assembler 标准
        ├── boot \\这是框架的核心启动包,负责框架组件的注册、发现
        ├── command  \\提供 Command 标准
        ├── common
        ├── context  \\提供框架执行所需要的上下文
        ├── domain  \\提供 Domain Entity 标准
        ├── event
        ├── exception \\提供 Exception 标准
        ├── extension  \\负责扩展机制中的重要概念-扩展(Extension)的定义和执行
        ├── logger  \\提供 DIP 的日志接口
        ├── repository  \\提供仓储(Repository)的标准

cola-common

该 Module 提供了框架中 Client Object, Entity Object 和 Data Object 的定义,二方库会依赖该 Module。

cola-test

该 Module 主要是提供一些开发测试的工具,可以使用 TDD 来进行开发。

COLA 架构

COLA 作为架构,组要是制定了一套指导和约束,并将这套规范沉淀成 Archetype。以便通过 Archetype 可以快速的生成符合 COLA 规范的应用。满足 COLA 的应用是一个有清晰的依赖关系的分层架构,如下图所示:

image.png

我们提供了两个 Archetype,分别是 cola-archetype-service 和 cola-archetype-web

cola-archetype-service

用来生成纯后端应用(没有 Controller),生成应用的命令为:

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

cola-archetype-web

用来生成 Web 后端应用(有 Controller),生成应用的命令为:

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

如何使用 COLA

第一步:生成 COLA 应用

1、使用 Archetype 生成应用:

直接运行上面提供的 Archetype 命令就可以生成应用,如果你的 Remote Maven Repository 里面没有 Archetype 的 Jar 包,也可以自己下载 Archetype 到本地,然后本地运行 mvn install 安装。

2、 检查应用里的模块和组件:

如果命令执行成功的话,我们可以看到如下的代码结构,它们就是 COLA 应用架构。 image.png

第二步:运行 Demo

1、进入在第一步中生成的应用目录。

2、启动 SpringBoot:

首先在 demo 目录下运行 mvn install(如果不想运行测试,可以加上-DskipTests 参数)。然后进入 start 目录,执行 mvn spring-boot:run。 运行成功的话,可以看到 SpringBoot 启动成功的界面。

3、 执行测试:

生成的应用中,已经实现了一个简单的 Rest 请求,可以在浏览器中输入 http://localhost:8080/customer?name=World 进行测试。

4、查看运行日志:

请求执行成功的话,可以在浏览器中的返回值中看到:"customerName":"Hello, World"。同时观察启动 SpringBoot 的控制台,可以看到 LoggerInterceptor 打印出来的日志。

Apps
About Me
Google+: Trinea trinea
GitHub: Trinea