--- title: "COLA架构-阿里云开发者社区" source: "https://developer.aliyun.com/article/837065" author: published: created: 2024-12-16 description: "COLA架构" tags: - "clippings" --- **简介:** COLA架构 ### COLA架构 #### COLA架构设计 COLA 的分层是一种经过改良的三层架构,主要是讲传统的业务逻辑层拆分为应用层、领域层和基础设施层。 ![[5142d8a8283694600ab349f302e4d023_MD5.webp|"image.png"]] 1. 展示层(Presentation Layer):负责以 Rest 的风格接收 Web 请求,然后将请求路由给 Application 层执行,并返回视图模型(View Model),其载体通常是数据传输对象(Data Transfer Object, DTO); 2. 应用层(Application Layer):主要负责获取输入、组装上下文、做输入校验、调用领域层做业务处理,当需要时发送消息通知。当然,层次是开放的,若有需要,应用层也可以直接访问基础设施层; 3. 领域层(Domain Layer):主要封装了核心业务逻辑, 并通过领域服务(Domaini Service)和领域对象(Entities)的函数对外部提供业务逻辑的计算和处理; 4. 基础设施层(Infrastructure Layer):主要包含数据访问通道(Tunnel)、Config 和 Comon。这里Tunnel这个概念对所有的数据来源进行抽象,数据来源可以是数据库(MySQL/NoSQL)、搜索引擎、文件系统,也可以是SOA服务等;Config 负责应用的配置;Common是通用的工具类; #### 规范设计 COLA制定了一系列的规范,包括组件(Module)结构、包(Package)结构、命名等。 #### 组件规范 COLA规定一个应用至少要有3个组件:应用层、领域层和基础设施层。如果不是严格的前后端分离,也可以加入展示层的组件,但这是可选的。组件的依赖关系如下: ![[64f46aaa9080b9a6c49981817ce1ecab_MD5.webp|"image.png"]] 从上面的依赖关系可以看到,领域组件(Domain Module)是应用的核心,负责核心业务逻辑的处理,不应该有任何的外部依赖。领域组件的实现方式有两种,一种是把领域组件设计成纯POJO,另一种是通过依赖倒置,将数据访问的接口放在领域组件里,让基础设施组件(Infrastructure Module)去做接口的实现。 #### 包规范 #### 应用的包结构 ![[8b380879e13907fa9f85abc279b62e82_MD5.webp|"image.png"]] 领域层的包结构 ![[8ab3a9bc01c44fadb8ffa45bcfe6e2a0_MD5.webp|"image.png"]] 基础设施层的包结构 ![[eea32d6953b636c33f7a6a0d45737af0_MD5.webp|"image.png"]] 命名规范 在COLA架构中,制定了一系列的命名规范,以便通过名称就能知晓该类的作用和职责范围,从而极大的提升代码的可理解性,提升代码审查的效率。 对于类名的主要约定如表 ![[793838d7c5bf0b45760a14b598dad33c_MD5.webp|"image.png"]] ![[be6deff0de0dc3348604fd249cfb02bd_MD5.webp|"image.png"]]