C2架构风格是一种常见的层次体系架构风格。该架构风格概括而言,是由连接件绑定的按一定规则运行的并行构件网络,在该架构风格中,各构件之间不能直接连接,只能通过连接件的异步通信机制进行交互,使得构件的替换或更新不影响架构,这种方式体现了高内聚,松耦合的设计思想。
特点
在C2架构风格中,构件与连接件有以下几点:
- 构件之间不能直接连接
- 构件,连接件都有顶部与底部
- 构件顶部或底部只能与连接件底部或顶部相连,
- 连接件相互之间可通过顶部及底部连接
- 构件不感知下一层构件
- 构件可以感知上一层构件
- 构件之间通过连接件的异步消息机制交互
消息机制
在C2风格中,构件与构件之间只能通过消息进行交互中,因此将消息分为了两类:
- 请求:下一层构件通过顶层向上一层构件底层发送的消息
- 通知:上一层构件通过底层向下一层构件发送的消息
从上可知,C2中的构件存在两个部件,即
- 顶层域:能对哪些通知做出响应及会发出哪些请求
- 底层域:能请收哪些请求及会发出哪些通知
同时若构件之间的消息如果不能直接解析,还需要一个域转换器进行消息及请求的转换。
点评
优点
- 松耦合
上层构件对下层构件不感知,方便更新或替换下层构件。 - 高内聚
构件之间通过消息交互,相对独立,可以封装任意复杂度的构件至系统中 - 易扩展修改
构件只与上下层构件交互,功能的修改最多只影响上下层,不扩散影响。 - 可重用
只要符合请求及响应标准,就可重用构件。
缺点
- 效率低:
若业务处理涉及多个构件层次,在系统执行过程中将存在性能损耗 - 层次不清:
难以划分出合适的,正确的层次结构,有时由于需求,需要跨层交互,增加复杂性