前言
C2架构风格是一种常见的层次体系架构风格。该架构风格概括而言,是由连接件绑定的按一定规则运行的并行构件 络,在该架构风格中,各构件之间不能直接连接,只能通过连接件的异步通信机制进行交互,使得构件的替换或更新不影响架构,这种方式体现了高内聚,松耦合的设计思想。
C2简介
特点
在C2架构风格中,构件与连接件有以下几点:
- 构件之间不能直接连接
- 构件,连接件都有顶部与底部
- 构件顶部或底部只能与连接件底部或顶部相连,
- 连接件相互之间可通过顶部及底部连接
- 构件不感知下一层构件
- 构件可以感知上一层构件
- 构件之间通过连接件的异步消息机制交互
C2架构图所下所示:
C2架构
消息机制
在C2风格中,构件与构件之间只能通过消息进行交互中,因此将消息分为了两类,
- 请求:下一层构件通过顶层向上一层构件底层发送的消息
- 通知:上一层构件通过底层向下一层构件发送的消息
从上可知,C2中的构件存在两个部件,即
- 顶层域:能对哪些通知做出响应及会发出哪些请求
- 底层域:能请收哪些请求及会发出哪些通知
同时若构件之间的消息如果不能直接解析,还需要一个域转换器进行消息及请求的转换。
构件组成
在C2中一个完整的符合定义的构件由以下几个部分组成。
构件组成
InternalObject:内部对象,业务领域的具体实现
Wrapper:内部对象的包装类,可选项
DomainTranslator:域转换器,可选,用于对接收到的请求或响应进行转换
Dialog&Constranits:控制器,接收到请求或响应并转换成内部调用
优点
松耦合,上层构件对下层构件不感知,方便更新或替换下层构件。
高内聚,构件之间通过消息交互,相对独立,可以封装任意复杂度的构件至系统中
易扩展修改,构件只与上下层构件交互,功能的修改最多只影响上下层,不扩散影响。
可重用,只要符合请求及响应标准,就可重用构件。
缺点
效率低:若业务处理涉及多个构件层次,在系统执行过程中将存在性能损耗
层次不清:难以划分出合适的,正确的层次结构,有时由于需求,需要跨层交互,增加复杂性
案例
OSI参考模型
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!