专业的编程技术博客社区

网站首页 > 博客文章 正文

阿里开源COLA 4.0架构分层介绍和应用实践

baijin 2025-03-19 10:24:16 博客文章 13 ℃ 0 评论

COLA 是 Clean Object-oriented and Layered Architecture的缩写,代表“整洁面向对象分层架构”,是来自阿里技术专家的开源项目。目前COLA已经发展到COLA 4.0。

作者张建飞(Frank)创建COLA的初心之一——试图探索一套切实可行的应用架构规范,这个规范不是高高在上的纸上谈兵,而是可以复制、可以理解、可以落地、可以控制复杂性的指导和约束。


一、COLA 4.0提供的项目模板

COLA 4.0 提供了两套Archetype,一套是纯后端应用,另一套是Web后端应用,它们的区别是Web后端应用比纯后端应用多了一个Adapter模块。

可以基于COLA提供的项目模板类型,通过如下命令行快速创建COLA应用:

(1)生成Web后端应用(有Adpater层)

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

(2)生成纯后端应用(没有Adapter层)

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


上述maven命令执行命令后,会看到如下的模块结构,上部分是应用骨架,下部分是COLA组件。


二、COLA架构及其组件模型

COLA架构及其组件模型图,其中包括Adapter层、Application层、Domain层、Infrastructure层和Client二方库,如图所示。


绿色表示必选的组件,黄色表示可选的组件。

这些组件各自都有自己的职责范围,组件的职责是COLA的重要组成部分。


这些组件的详细职责描述如下:

(1) 二方库里的组件

  • api:存放的是应用对外的接口。
  • dto.domainmodel:用来做数据传输的轻量级领域对象。
  • dto.domainevent: 用来做数据传输的领域事件。

二方库主要用来定义服务接口和数据协议,也是实现Shared Kernel(共享内核)的重要手段之一。


(2) Application里的组件

  • service:接口实现的facade,没有业务逻辑,可以包含对不同终端的adapter。
  • eventhandler:处理领域事件,包括本域的和外域的。
  • executor:用来处理命令(Command)和查询(Query),对复杂业务,可以包含Phase和Step。
  • interceptor: COLA提供的对所有请求的AOP处理机制。


(3)Domain里的组件

  • domain:聚合根、实体和值对象等等。
  • domainservice: 领域服务,用来提供更粗粒度的领域能力。
  • gateway:对外依赖的网关接口,包括存储、RPC、Search等。


(4)Infrastructure里的组件

  • config:配置信息相关。
  • message:消息处理相关。
  • convertor:数据对象(DataObject)和领域实体对象(Domain Entity)之间的转换。
  • gateway:对外依赖的网关接口(Domain里的gateway)的实现。


在使用COLA的时候,请尽量按照组件规范约束去构建我们的应用。这样可以让我们的应用结构清晰、有章可循。如此这般,代码的可维护性和可理解性会得到极大的提升。

(此处已添加圈子卡片,请到今日头条客户端查看)

三、基于COLA架构的应用实践

下图是基于COLA 架构建的DDD经典示例应用-货物运输系统(Cargo Tracker Application)的代码结构:

《COLA 4.x架构入门和项目实践》技术专栏详细讲解COLA框架的使用,领域驱动设计DDD中领域模型的开发,以及DDD经典示例项目-货物运输系统(Cargo Tracker Application)代码实现细节。


————————————————

本文部分内容来自于CSDN博主「张建飞(Frank)」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

原文链接:
https://blog.csdn.net/significantfrank/article/details/100074716

(此处已添加圈子卡片,请到今日头条客户端查看)

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表