16-层次式架构设计实践(第16小时)
软考-系统架构设计师 | 第4篇 架构设计实践知识 出题形式:下午案例分析题(必出 25 分)+ 上午选择题(2-5 分)+ 论文题 分值占比:约 25-30 分(重点!必出案例)
0. 考点分析
- 层次式架构 4 层划分:表现层 / 中间层 / 访问层 / 数据层
- MVC / MVP / MVVM 三种模式:表现层设计
- 业务逻辑层组件设计:Domain Model-Service-Control
- 数据访问 5 种模式:在线访问、DAO、DTO、离线数据、ORM
- ACID 事务原则:原子性、一致性、隔离性、持久性
- 物联网三层架构:感知层 / 网络层 / 应用层
- 架构污水池反模式:层间无业务逻辑的问题
1. 核心架构知识
1.1 层次式体系结构概述
定义:软件体系结构为软件系统提供了结构、行为和属性的高级抽象,由构成系统的元素描述这些元素的相互作用、指导元素集成的模式以及这些模式的约束组成。
核心思想:将系统组成为一个层次结构,每一层为上层服务,并作为下层客户。
层次式应用的组成(4 层结构):
| |
特点:
- 关注点分离:每层中的组件只负责本层的逻辑
- 接口一致性:只要给相邻层提供相同的接口,允许每层用不同方法实现
- 支持软件重用
注意事项:
- 容易成为污水池反模式(Architecture Sinkhole Anti-patter):请求流简单地穿过几个层,每层里面基本没有做任何业务逻辑
- 分层架构可能会让应用变得庞大
1.2 表现层框架设计
1.2.1 MVC 模式
MVC 把一个应用的输入、处理、输出流程按照视图、控制、模型的方式进行分离。
| 组件 | 职责 |
|---|---|
| 控制器(Controller) | 接受用户的输入,并调用模型和视图去完成用户的需求 |
| 模型(Model) | 应用程序的主体部分,表示业务数据和业务逻辑 |
| 视图(View) | 用户看到并与之交流的界面 |
优点:
- 允许多种用户界面的扩展
- 易于维护
- 易于构建功能强大的用户界面
- 增加应用的可拓展性、强壮性、灵活性
1.2.2 MVP 模式
Model 提供数据,View 负责显示,Controller/Presenter 负责逻辑的处理。
MVP 与 MVC 的区别:MVP 进一步降低了 Presenter 对 View 的依赖。
优点:
- 模型与视图完全分离,可以修改视图而不影响模型
- 所有的交互都发生在一个地方—Presenter 内部
- 可以将一个 Presenter 用于多个视图,而不需要改变 Presenter 的逻辑
- 如果把逻辑放在 Presenter 中,就可以脱离用户接口来测试这些逻辑(单元测试)
1.2.3 MVVM 模式
View 与 Model 的交互通过 ViewModel 来实现,两者不能直接通信。
- 核心:ViewModel 通过 DataBinding 实现 View 与 Model 之间的双向绑定
- 内容包括:数据状态处理、数据绑定及数据转换
- 与 MVP 区别:MVVM 是双向数据绑定,而 MVP 是单向通信
1.3 中间层(业务层)框架设计
1.3.1 业务逻辑层组件设计
业务逻辑层组件分为接口和实现类两个部分:
- 接口:定义业务逻辑组件必须实现的方法
- 实现类:按模块设计,每个模块设计一个业务逻辑组件
- 以多个 DAO 组件作为基础,对外提供系统的业务逻辑服务
1.3.2 业务逻辑层工作流设计
WFMC 定义:业务流程的全部或部分自动化,文档、信息或任务按照一定的过程规则流转,实现组织成员间的协调工作以达到业务的整体目标。
工作流参考模型 5 大组件:
- 过程定义工具
- 工作流引擎
- 工作流客户端应用
- 相关应用
- 管理与监视工具
1.3.3 业务逻辑层实体设计
- 逻辑层实体提供对业务数据及相关功能的状态编程访问
- 可使用具有复杂架构的数据(通常来自多个相关表)
- 可序列化,以保持它们的当前状态
1.3.4 业务逻辑层框架(Domain Model-Service-Control)
| 元素 | 含义 |
|---|---|
| Domain Model | 仅仅包含业务相关的属性的领域层业务对象 |
| Service | 业务过程实现的组成部分,是应用程序的不同功能单元,通过良好接口和契约联系起来 |
| Control | 服务控制器,服务之间的纽带,不同服务之间的切换通过它来实现 |
1.4 数据访问层设计
1.4.1 数据访问 5 种模式
| 模式 | 特点 |
|---|---|
| 在线访问 | 最常用,占用一个数据库连接,每个操作通过这个连接与数据源交互 |
| DAO | J2EE 标准模式,将底层数据访问与高层业务逻辑分离 |
| DTO | EJB 设计模式之一,跨越进程/网络边界传输数据 |
| 离线数据模式 | 以数据为中心,数据预定义结构存放,独立于后台连接 |
| ORM | 工具/平台帮助将应用数据转换成关系型数据库记录 |
典型 DAO 实现:
- 一个 DAO 工厂类
- 一个 DAO 接口
- 一个实现了 DAO 接口的具体类
- 数据传输对象
1.4.2 工厂模式
定义一个用于创建对象的接口,让子类决定实例化哪一个类。处理对多种数据库的操作时使用。
1.4.3 ORM 与 Hibernate
- ORM:在关系型数据库和对象之间作映射
- Hibernate:O/R 映射方案,映射普通 Java 对象模型到持久对象
1.4.4 事务处理设计 - ACID 原则
事务必须服从 ISO/IEC 所制定的 ACID 原则:
| 原则 | 含义 |
|---|---|
| A - 原子性(Atomicity) | 事务执行过程中的任何失败都将导致事务所做的任何修改失效 |
| C - 一致性(Consistency) | 当事务执行失败时,所有被该事务影响的数据都应该恢复到事务执行前的状态 |
| I - 隔离性(Isolation) | 在事务执行过程中对数据的修改,在事务提交之前对其他事务不可见 |
| D - 持久性(Durability) | 已提交的数据在事务执行失败时,数据的状态都应该正确 |
注意:隔离性是"提交之前"不可见,不是"提交之后"。
1.4.5 连接对象管理
建立数据库连接池,提供高效的连接分配、使用策略,保证数据库连接的有效复用。
1.5 数据架构规划与设计
- 数据库设计与类的设计融合:类和类之间关系的正确识别是关键
- 数据库设计与 XML 设计融合:XML 文档存储方式有基于文件、基于数据库两种
1.6 物联网层次架构设计
| 层次 | 功能 | 类比 | 典型设备 |
|---|---|---|---|
| 感知层 | 识别物体、采集信息 | 皮肤和五官 | 二维码、RFID、摄像头、GPS、传感器、M2M 终端、传感器网关 |
| 网络层 | 传递信息和处理信息 | 神经中枢和大脑 | 通信网与互联网融合网络、网络管理中心、信息中心、智能处理中心 |
| 应用层 | 实现广泛智能化 | 社会分工 | 物联网与行业专业技术深度融合 |
1.7 实践案例
案例 1:传统电商系统的层次式架构
- 表现层:HTML + JavaScript(视图)
- 中间层:Spring MVC 控制器 + Service 业务逻辑
- 访问层:MyBatis/Hibernate ORM
- 数据层:MySQL 数据库
案例 2:智能工厂的物联网层次架构
- 感知层:温湿度传感器、RFID、PLC 设备
- 网络层:工业以太网、MQTT 消息中间件
- 应用层:MES、ERP 工业管理系统
2. 关键概念速查
| 概念 | 定义/说明 | 常见考点 |
|---|---|---|
| MVC | Model-View-Controller | 强分离输入、处理、输出 |
| MVP | Model-View-Presenter | Presenter 进一步解耦 |
| MVVM | Model-View-ViewModel | 双向数据绑定(DataBinding) |
| DAO | Data Access Object | J2EE 标准模式 |
| DTO | Data Transfer Object | 跨进程数据传输 |
| ORM | Object-Relation Mapping | 对象/关系映射 |
| Hibernate | ORM 框架 | Java 主流 ORM |
| ACID | 事务 4 大特性 | 注意隔离性是提交"前" |
| Domain Model | 领域模型 | 业务属性对象 |
| Service | 服务 | 业务过程组成 |
| Control | 控制器 | 服务间切换 |
| 污水池反模式 | Sinkhole Anti-pattern | 层间无业务逻辑 |
| 感知层 | 物联网最底层 | 传感器、RFID、GPS |
| 网络层 | 物联网中间层 | 通信网络 |
| 应用层 | 物联网最上层 | 行业应用 |
3. 典型例题(案例分析题)
例题 1:选择题
题目:软件体系结构为软件系统提供了( )的高级抽象。
A. 继承、多态、实现 B. 关联、扩展、泛化 C. 结构、行为、属性 D. 构件定义、访问方式、组织部署
参考答案:C 解析:软件体系结构为软件系统提供了结构、行为和属性的高级抽象。
例题 2:选择题
题目:MVC 模式强制性地把一个应用的( )流程进行分离,形成了控制器、模型、视图三个核心模块。
A. 启动、运行、结束 B. 输入、处理、输出 C. 前端/客户端、服务端、数据库 D. 接受请求、处理请求、返回请求
参考答案:B 解析:MVC 强制性分离的是输入、处理、输出。
例题 3:选择题
题目:工作流参考模型包括的组件是( )。
A. 过程定义工具、工作流引擎、工作流客户端应用、相关应用、管理与监视工具 B. 工作流定义工具、工作流引擎、工作流客户端应用、相关应用、管理与监视工具 C. 工作流定义工具、工作流引擎、工作流客户端应用、工作流 API、管理与监视工具 D. 过程定义工具、工作流引擎、工作流客户端应用、工作流 API、管理与监视工具
参考答案:A 解析:工作流参考模型包括过程定义工具、工作流引擎、工作流客户端应用、相关应用、管理与监视工具。
例题 4:选择题(陷阱题)
题目:关于 ACID 的说法错误的是( )。
A. 事务的原子性表示事务执行过程中的任何失败都将导致事务所做的任何修改失效 B. 一致性表示当事务执行失败时,所有被该事务影响的数据都应该恢复到事务执行前的状态 C. 隔离性表示在事务执行过程中对数据的修改,在事务提交之后对其他事务不可见 D. 持久性表示已提交的数据在事务执行失败时,数据的状态都应该正确
参考答案:C 解析:隔离性是"提交之前“对其他事务不可见,不是"提交之后”。
例题 5:选择题
题目:物联网的感知层用于识别物体、采集信息。下列( )不属于感知层设备。
A. 摄像头 B. GPS C. 扫描仪 D. 指纹
参考答案:D 解析:感知层主要功能是识别对象、采集信息。摄像头、GPS、扫描仪都是感知层设备。指纹是人的特征属性,不是感知层设备。
4. 论文素材
本章是论文题出题范围,以下 3 个题目方向可以重点准备:
论层次式架构设计方法在企业级应用中的应用
- 写作要点:4 层架构(表现层/中间层/访问层/数据层)、MVC 工作流
- 实战案例:Spring + MyBatis + MySQL 架构
论企业信息系统表现层架构设计与优化
- 写作要点:MVC / MVP / MVVM 的对比、选择依据
- 实战案例:从 MVC 演进到 MVVM 解决双向数据绑定问题
论面向物联网应用系统的层次式架构设计
- 写作要点:感知层/网络层/应用层、设备选型、协议设计
- 实战案例:智能工厂、智能农业、智慧城市
5. 高频考点
- MVC / MVP / MVVM 的区别:每年必考
- ACID 4 大特性:必出选择,重点是隔离性的"提交之前"
- DAO / DTO / ORM:3 种数据访问模式区分
- 物联网 3 层架构:感知层设备识别
- Domain Model-Service-Control:业务层三件套
- 层次式架构的污水池反模式:易被忽视的概念
- 工作流参考模型 5 大组件:必背