C2软件架构风格

前言

C2架构风格是一种常见的层次体系架构风格。该架构风格概括而言,是由连接件绑定的按一定规则运行的并行构件网络,在该架构风格中,各构件之间不能直接连接,只能通过连接件的异步通信机制进行交互,使得构件的替换或更新不影响架构,这种方式体现了高内聚,松耦合的设计思想。

C2简介

特点

在C2架构风格中,构件与连接件有以下几点:

  1. 构件之间不能直接连接
  2. 构件,连接件都有顶部与底部
  3. 构件顶部或底部只能与连接件底部或顶部相连,
  4. 连接件相互之间可通过顶部及底部连接
  5. 构件不感知下一层构件
  6. 构件可以感知上一层构件
  7. 构件之间通过连接件的异步消息机制交互

C2架构图所下所示:

 

C2架构

消息机制

在C2风格中,构件与构件之间只能通过消息进行交互中,因此将消息分为了两类,

  1. 请求:下一层构件通过顶层向上一层构件底层发送的消息
  2. 通知:上一层构件通过底层向下一层构件发送的消息

 

从上可知,C2中的构件存在两个部件,即

  1. 顶层域:能对哪些通知做出响应及会发出哪些请求
  2. 底层域:能请收哪些请求及会发出哪些通知

 

同时若构件之间的消息如果不能直接解析,还需要一个域转换器进行消息及请求的转换。

 

构件组成

在C2中一个完整的符合定义的构件由以下几个部分组成。

 

构件组成

InternalObject:内部对象,业务领域的具体实现

Wrapper:内部对象的包装类,可选项

DomainTranslator:域转换器,可选,用于对接收到的请求或响应进行转换

Dialog&Constranits:控制器,接收到请求或响应并转换成内部调用

优点

松耦合,上层构件对下层构件不感知,方便更新或替换下层构件。

高内聚,构件之间通过消息交互,相对独立,可以封装任意复杂度的构件至系统中

易扩展修改,构件只与上下层构件交互,功能的修改最多只影响上下层,不扩散影响。

可重用,只要符合请求及响应标准,就可重用构件。

缺点

效率低若业务处理涉及多个构件层次,在系统执行过程中将存在性能损耗

层次不清:难以划分出合适的,正确的层次结构,有时由于需求,需要跨层交互,增加复杂性

 

 

案例

OSI参考模型

  • 2
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
软件体系结构描述语言:C2 学校教务系统中教师补课子系统有如下一些基本假设: 本系统中有三个基本对象:教师、学生和教务员。 补课基本流程如下: 教师(teacher)分别向学生(student)与教务员(dean)发出补课请求makeupClassRequest()、并提供一个教师期望的补课时间与地点的集合preferSetTeacher(time, address),提出一个教师不期望的补课时间与地点集合excludeSetTeacher(time, address)供学生选择。同时,教师向学生与教务员发出请求获取学生与教务员期望的补课时间地点集合getPerferSet(),获取不喜欢的时间地点集合getExcludeSet(),获取教师所提供的期望补课时间地点集合之外的时间地点集合addPreferSet(), 学生与教务员收到教师的补课请求以及相应的参数后,根据自身的情况以及学校课室的使用情况,结合教师所提供的preferSetTeacher(time, address)、excludeSetTeacher(time, address),①从preferSetTeacher(time, address)集合中选取出合适的元组组成学生自己所期望的补课时间与地点集合preferSet(time,address)。②增加不在excludeSetTeacher(time, address)的时间与地点集合excludeSet(time, address)。最后将preferSet(time,address)与excludeSet(time, address)发回给教师。 教师接收到学生与教务员返回的集合excludeSet(time, address)后,与excludeSet(time, address)进行“并”(or)计算。接收到preferRes(time, address)后,与原有的preferSet(time, address)进行“交”(and)计算,然后再与excludeSet(time, address)进行差(subtraction)运算。 教师最后从preferSetTeacher(time, address)集合中选择一个元组作为补课的时间与地点,并通知学生与教务处。 要求: 画出该系统基于C2风格的体系结构图 利用C2语言描述出教师构件 利用C2语言描述出学生构件 种用C2语言设计出本系结构中的连接件 描述出软件体系结构并设计出一个体系结构的实例,在这个实例中,教师是张三,有学生有a,b,c三人,教务员是李四。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值