rabbit-obsidian/Clippings/COLA架构-阿里云开发者社区.md

62 lines
2.9 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
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"]]