Cola4.0 整洁面向对象分层架构详解
  w5drKdEZCZdz 2023年11月02日 52 0

0 简介

Clean Object-Oriented and Layered Architecture,整洁面向对象分层架构。 目前COLA已经发展到COLA v4

COLA两部分:

  • COLA架构
  • COLA组件

1 COLA架构

1.1 COLA 概述

架构的意义

就是要素结构:

  • 要素,组成架构的重要元素
  • 结构,要素之间的关系

应用架构的意义

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

COLA架构为此而生,核心职责就是定义良好的应用结构,提供最佳应用架构的最佳实践。实践证明,良好的分层结构,良好的包结构定义,有助治理混乱不堪的业务应用系统。

cure

如今终于有了相对稳定、可靠的应用架构:COLA v4

1.2 COLA Archetypes

好的应用架构,都遵循一些共同模式,不管六边形架构、洋葱圈架构、整洁架构、COLA架构,都提倡:

  • 业务为核心
  • 解耦外部依赖
  • 分离业务复杂度和技术复杂度
  • ...

COLA架构独到除了思想,还提供可落地的工具和实践指导。

为快速创建COLA架构应用,提供两个archetype,位于cola-archetypes目录

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

2 COLA组件

cola-components目录下。已沉淀组件:

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

3 使用

3.1 创建应用

执行命令:

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.3.2

看到如下应用代码结构:

3.2 运行应用

  • 项目目录下运行mvn install(如果不想运行测试,可以加上-DskipTests参数)
  • 进入start目录,执行mvn spring-boot:run。 运行成功的话,可以看到SpringBoot启动成功的界面。
  • 生成的应用中,已经实现了一个简单的Rest请求, http://localhost:8080/helloworld 测试。

生成不是web工程而是service工程也类似,执行:

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

4 版本迭代

4.0.0 版本

https://blog.csdn.net/significantfrank/article/details/110934799

3.1.0 版本

https://blog.csdn.net/significantfrank/article/details/109529311

  1. 进一步简化cola-core,只保留扩展能力
  2. exceptioncola-core移入cola-common
  3. archetype中的分包逻辑进行重构,改成按照domain做划分
  4. cola-archetype-web中的controller改名为adapter,为呼应六边形架构命名

3.0.0 版本

https://blog.csdn.net/significantfrank/article/details/106976804

2.0.0 版本

https://blog.csdn.net/significantfrank/article/details/100074716

1.0.0 版本

https://blog.csdn.net/significantfrank/article/details/85785565

参考

  • COLA背后的故事,[《程序员的底层思维》](
【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

推荐阅读
  NPQODODLqddb   2024年05月17日   66   0   0 .NET
  mVIyUuLhKsxa   2024年05月17日   51   0   0 .NET
  XkHDHG7Y62UM   2024年05月17日   43   0   0 .NET
  f18CFixvrKz8   2024年05月18日   80   0   0 .NET
  91iksFPNXQfB   2024年05月17日   47   0   0 .NET
  rBgzkhl6abbw   2024年05月18日   73   0   0 .NET
  MYrYhn3ObP4r   2024年05月17日   39   0   0 .NET
  S34pIcuyyIVd   2024年05月17日   56   0   0 .NET
  gKJ2xtp6I8Y7   2024年05月17日   50   0   0 .NET
  MYrYhn3ObP4r   2024年05月17日   37   0   0 .NET
w5drKdEZCZdz