系统架构设计师备考站2027 上半年 · 通勤版 ⌕搜索
本页目录 · 5 节
  1. 一、知识框架
  2. 二、必背要点
  3. 13.1 层次式体系结构概述
  4. 13.2 表现层框架设计
  5. 13.3 中间层架构设计
  6. 13.4 数据访问层设计
  7. 13.5 数据架构规划与设计
  8. 13.6 物联网层次架构设计
  9. 13.7 案例分析
  10. 三、易混淆概念对比
  11. 四、常见考法与出题角度
  12. 五、速记与自测

第 13 章 层次式架构设计理论与实践

对应大纲:科目 1-12 层次式架构设计理论与实践|教材 P451–P481|优先级 ★★★★|综合知识估分 2~4 分
读法:把「表现层—中间层—数据访问层—数据层」当成一条纵向流水线,每层只记「职责 + 模式 + 一个案例」;MVC 三兄弟和 5 种数据访问模式是最稳的得分点。


一、知识框架

层次式架构设计理论与实践
├─ 13.1 概述:表现层|中间层|数据访问层|数据层
├─ 13.2 表现层框架设计
│   ├─ 设计模式:MVC|MVP|MVVM
│   ├─ XML 统一外观
│   ├─ UIP 思想
│   └─ 动态生成
├─ 13.3 中间层架构设计
│   ├─ 业务逻辑组件:事务脚本|领域模型|表模块
│   ├─ 工作流:参考模型与引擎
│   ├─ 实体:实体类与实体集合
│   └─ 框架:Spring、.NET
├─ 13.4 数据访问层设计
│   ├─ 5 种模式:在线访问|DAO|DTO|离线数据|ORM
│   ├─ 工厂模式
│   ├─ ORM 与 Hibernate
│   ├─ XML Schema
│   ├─ 事务处理:ACID|2PC
│   └─ 连接对象管理
├─ 13.5 数据架构规划与设计
│   ├─ 数据库设计与类设计融合
│   └─ 与 XML 设计融合
├─ 13.6 物联网层次架构:感知/网络/应用
└─ 13.7 案例分析:PetShop|电子小票

二、必背要点

13.1 层次式体系结构概述

层次职责典型技术
表现层界面展示、人机交互、输入校验JSP、Vue/React、WPF
中间层业务规则、流程编排、事务边界Spring Service、EJB、BLL
数据访问层屏蔽数据库差异、CRUD、对象映射MyBatis、Hibernate、ADO.NET
数据层持久化存储关系库、NoSQL、文件系统

优点:关注点分离、层间松耦合、每层可独立替换。
缺点:调用链长有性能损耗;需求可能穿透多层造成级联修改;过度分层增加复杂度。
分层原则:上层依赖下层且依赖抽象;跨层调用须经接口或门面;禁止下层反向依赖。

13.2 表现层框架设计

三种表现层模式

模式组成与交互适用
MVCView 可读 Model,Controller 接收请求并调度Web、桌面应用
MVPView 与 Model 完全隔离,全部经 Presenter界面测试要求高的客户端
MVVMView 与 ViewModel 双向绑定,自动同步富前端(WPF、Vue)

一句话区分:MVC 的 View 能直接碰 Model;MVP 的 View 是哑视图,一切靠 Presenter;MVVM 用数据绑定省掉手写同步。

XML 统一外观:把控件样式、布局、颜色抽到 XML 配置,由外观引擎统一渲染,实现「一套逻辑、多套皮肤」。

UIP 思想:把界面导航与流程控制从页面中抽出,形成独立的界面过程组件;页面只负责展示,流程由 UIP 统一调度,便于流程复用与多端一致。

动态生成:依据元数据或配置在运行时生成表单、列表、菜单,减少重复编码、适应需求频变;代价是调试难、性能有损耗。

13.3 中间层架构设计

业务逻辑组件的三种组织方式

类型组织方式适用
事务脚本一个用例一个过程,直接操作数据逻辑简单的小系统
领域模型对象同时含状态与行为逻辑复杂、需长期演进
表模块一个类对应一张表,封装表内操作以数据为中心、表结构稳定

工作流参考模型:WFMC 提出,含 5 类组件与 5 个接口。组件为流程定义工具、工作流执行服务(引擎)、客户端应用、被调用应用、管理监控工具;接口 1~5 分别连接引擎与流程定义工具、客户端应用、被调用应用、其他引擎、监控工具。

工作流引擎职责:解析流程定义、创建并调度实例、分派任务、持久化状态、处理超时与异常。

实体:实体类承载业务数据与行为,实体集合管理一组实体,通常与表或视图对应。与 DTO 的区别是实体有行为,DTO 只有数据。

框架:Spring、EJB、.NET 提供依赖注入、AOP、声明式事务与 MVC 集成,把横切关注点从业务代码剥离。

13.4 数据访问层设计

五种数据访问模式

模式做法优点缺点
在线访问每次直接连库、逐条操作简单、实时连接开销大、强耦合数据库
DAO用接口封装数据访问实现解耦、易替换、易测试类数量增多
DTO用纯数据对象跨层或远程传输减少网络往返、聚合数据需转换、可能冗余
离线数据模式本地缓存数据集,断开后操作再同步支持离线、减少长连接并发冲突、同步复杂
ORM对象与关系表自动映射效率高、屏蔽数据库差异复杂查询性能与可控性差

工厂模式的作用:把「创建哪个具体实现」从调用方移出,按配置返回不同数据库的 DAO 实现;业务层只依赖接口,换库只改配置与工厂,体现开闭原则,常与抽象工厂、反射配合。

ORM 与 Hibernate

优点缺点
对象与关系模型自动映射复杂查询生成的 SQL 难优化
屏蔽数据库方言,可移植SQL 不可控,调优困难
自带缓存、延迟加载、事务管理大批量操作效率低
减少样板代码,开发效率高学习成本与调试难度较高

XML Schema:用 XSD 定义 XML 的结构、元素顺序与数据类型,用于数据交换契约与报文校验;结合对象映射(OXM)可在 XML 与对象间双向转换。

事务处理:本地事务满足 ACID;隔离级别为读未提交、读已提交、可重复读、串行化,对应脏读、不可重复读、幻读。跨库用两阶段提交(2PC):准备阶段锁定资源并表决,提交阶段统一提交或回滚;缺点是同步阻塞、协调者单点、部分失败不一致,故有 3PC、TCC、SAGA。

连接对象管理:连接创建销毁开销大。连接池预建并复用连接,用最小空闲、最大连接、超时、回收、心跳等参数控制,提升吞吐并防泄漏。

13.5 数据架构规划与设计

数据库设计与类设计融合:对象有继承、多态、引用,关系只有表与主外键,存在阻抗不匹配。

对象概念关系实现
类表
属性列
对象实例行
继承单表继承、具体表继承、类表继承
关联外键或关联表

设计顺序:概念模型(E-R)→ 逻辑模型(范式)→ 物理模型(索引、分区);类设计并行,用 ORM 映射对齐,避免先建库再倒推对象。

与 XML 设计融合:XML 作交换格式,XSD 定义契约,XML 与对象、关系数据双向映射;适合同构系统用关系模型、异构系统用报文解耦。

13.6 物联网层次架构设计

层次职责典型技术
感知层对象识别、数据采集、指令执行传感器、RFID、二维码
网络层数据传输与接入以太网、WiFi、5G、NB-IoT
应用层数据处理与行业服务云平台、大数据、AI、行业应用

公共支撑(设备管理、标识解析、安全)贯穿三层;边缘计算位于网络层与应用层之间。

13.7 案例分析

(1)PetShop

微软 .NET 的分层参考实现:Web 表现层、BLL 业务层、DAL 数据访问层、Model 实体层。DAL 采用接口 + 工厂,通过配置切换 SQL Server 与 Oracle 实现;用 SQLHelper 封装 ADO.NET。它体现分层、面向接口、工厂与依赖倒置,是「换库不改代码」的标准答案。

(2)电子小票

零售电子小票系统:表现层覆盖收银端与顾客小程序;中间层负责小票生成、优惠计算与退换货规则;数据访问层管理小票、商品、会员数据。小票样式用模板动态生成;高峰用消息队列削峰,小票号用分段或雪花算法保证唯一;打印与推送解耦,失败可重试。


三、易混淆概念对比

AB关键区别
MVCMVPMVC 中 View 可读 Model;MVP 中 View 与 Model 完全隔离
MVPMVVMMVP 靠 Presenter 手动同步;MVVM 靠双向绑定自动同步
DAODTODAO 封装数据访问逻辑;DTO 只承载数据、不含行为
DTO实体DTO 用于跨层传输、无业务行为;实体有状态也有业务行为
ORMDAOORM 是对象关系映射技术;DAO 是封装模式,可用 ORM 实现
事务脚本领域模型前者按用例写过程;后者用富对象建模业务
表模块活动记录表模块一个类管一张表;活动记录一行数据一个对象
2PCTCC2PC 强一致、同步阻塞;TCC 靠业务补偿、最终一致
连接池长连接连接池复用多个连接对象;长连接是保持单条连接不断
分层架构三层 C/S分层是逻辑职责划分;三层 C/S 还含部署与通信含义
物联网感知层网络层感知层负责采集与执行;网络层只负责传输接入

四、常见考法与出题角度

出题角度典型问法答题要点易错提示
模式识别「View 与 Model 完全隔离的是」MVPMVC 的 View 可直接读 Model
模式选型「Vue 双向绑定属于哪种模式」MVVM不是 MVC
层次职责「输入校验一般放在哪层」表现层;业务校验在中间层不要一律推给数据库
业务组件「逻辑复杂、需长期演进用」领域模型小系统才用事务脚本
工作流「WFMC 参考模型有几个接口」5 个组件也是 5 类
数据访问「屏蔽数据库差异、便于换库的是」DAO + 工厂不是 DTO
ORM「ORM 的主要缺点」复杂查询性能差、SQL 不可控不是开发效率低
事务「2PC 的缺点」同步阻塞、协调者单点不是不支持回滚

案例题角度:给一套业务系统,要求「指出分层问题并重构」。答题模板:先画四层 → 指出越层调用与职责错位 → 表现层引入 MVC/MVVM → 中间层抽服务与事务边界 → 数据访问层用 DAO+工厂+ORM → 补连接池与事务策略。

论文可用角度:可直接改写为——「在××系统中,表现层采用 MVVM 双向绑定,中间层按领域模型组织业务,数据访问层以 DAO 接口加工厂屏蔽数据库差异,数据库由 SQL Server 迁移到 MySQL 时仅修改配置,业务代码零改动。」


五、速记与自测

速记

  • 四层:表、中、访、数
  • MVC 族:MVC 可直连、MVP 全靠 P、MVVM 靠绑定
  • 业务三件套:事务脚本、领域模型、表模块
  • 数据访问五模式:在、DAO、DTO、离、ORM
  • 事务:ACID 四性 + 2PC 两阶段
  • 连接池:预建、复用、限流、回收
  • 物联网三层:感、网、用

自测

  1. MVC、MVP、MVVM 三者的核心区别是什么?
  2. 数据访问层的 5 种模式是什么?工厂模式起什么作用?
  3. 两阶段提交的两个阶段各做什么?主要缺点是什么?

答案:1. MVC 的 View 可直接访问 Model;MVP 的 View 与 Model 完全隔离、经 Presenter 交互;MVVM 通过 View 与 ViewModel 双向绑定自动同步。2. 在线访问、DAO、DTO、离线数据模式、ORM;工厂按配置创建具体 DAO 实现,业务层只依赖接口,换库不改代码。3. 准备阶段各参与者锁定资源并表决,提交阶段统一提交或回滚;缺点是同步阻塞、协调者单点、部分提交失败导致不一致。