ONEPSOFT | 软考学习知识库
deepread11|案例11 层次式架构设计(分层MVCBS-CS污水池反模式)详解
一、知识点定位
一句话定位:层次式架构把系统分表现/中间 (业务)/数据访问/数据四层,层间只相邻可见、上层依赖下层;MVC 是表现层经典模式(控制器 - 模型 - 视图);B/S 是 " 通用客户端的多层 C/S";要警惕 " 污水池反模式 "(层只传话不做业务)。
二、教材原文精摘(第 13 章,原封不动)
【分层概念】原文:
层次式体系结构设计是将系统组成一个层次结构,每一层为上层服务,并作为下层客户。内部的层接口只对相邻的层可见。每层最多只影响两层,只要给相邻层相同接口,允许每层不同方法实现。
分层架构的特性是关注分离 (separation of concerns):组件只负责本层逻辑,角色职责明确,易开发测试维护。
大部分应用分:表现层(展示层)、中间层(业务层)、数据访问层(持久层)和数据层。
【污水池反模式】原文:
污水池反模式 (architecture sinkhole anti-pattern):请求流简单穿过几层,每层基本没做业务逻辑。用二八原则判断——若此类请求超过 20%,应考虑让一些层变成开放的。
【MVC 三组件与交互】原文:
MVC 把输入、处理、输出按视图、控制、模型分离,形成控制器、模型、视图三核心模块。
交互:控制器接收用户请求→决定调哪个模型处理;模型做业务逻辑返回数据;控制器调相应视图格式化数据并呈现给用户。
MVC 优点:多种界面扩展(视图与模型无必然联系,只过控制器);易维护;功能强。MVC 中 View 可直接从 Model 读数据(MVP/MVVM 则禁止,必须经 Presenter/ViewModel)。
【MVP / MVVM(对照)原文:
MVP:View 不直接用 Model,通信经 Presenter;MVC 中 View 可直接读 Model。
MVVM:View 与 Model 通信经 ViewModel。
【B/S 与 C/S】原文:
两层 C/S = 前台客户端 + 后台数据库(胖客户端,界面 + 业务逻辑集成一单元)。
三层 C/S / B/S:B/S 是浏览器/服务器,Web 浏览器是客户应用,经 HTTP 与 Web 服务器相连;B/S 实质是 " 采用通用客户端界面的三层 C/S 结构 ",通信仍为 TCP/IP,仅应用层协议标准化。
多层 C/S:三层以上,四层即前台界面、Web 服务器、中间件 (应用服务器)、数据库服务器。
三、系统解读(逐段讲透)
核心一句话总结:分层=四层相邻依赖 + 关注分离;MVC=控收→模处→控展(View 可读 Model);B/S=通用客户端的三层 C/S;警惕污水池(层只传话>20% 要开放)。
四、工程实践举例(土木工程视角)
你做土木工程," 分层建造/专业分工 " 与层次式架构同构:
知识点 ↔ 工程实践 对照表
| 教材知识点要素 | 你的实践场景对应 | 映射说明 |
|---|---|---|
| 分层(相邻可见/上层依赖下层) | 结构分层建造 | 基础→主体→装饰 |
| 关注分离 | 专业分工 | 土建/机电/装修各管 |
| 四层职责 | 项目四层 | 展示/业务/数据访问/数据 |
| MVC 交互 | 三权分立 | 控收→模处→控展 |
| MVC 允许 View 读 Model | 展示直看现场 | MVP 则经项目经理 |
| 污水池反模式 | 无效中间管理 | 只传话>20% 要撤 |
| B/S | 通用浏览器终端 | 通用客户端三层 C/S |
| PetShop 演进 | 项目分层从混到清 | 分出数据访问层 |
当知识点涉及MVC 交互时,补充流程:
流程图(结构化呈现)
对应关系
| 节点A | 关系 | 节点B |
|---|---|---|
| 模型 Model·业务逻辑 | 返回数据 | 控制器 Controller |
| 视图 View·展示 | 呈现 | 用户请求 |
运维视角提示:分层架构 " 关注分离 " 让每层可独立部署/扩容/监控——运维按层自治(表现层扩 Web 服务器、数据层管库)。污水池反模式在运维上意味着 " 多余一层增加故障点却无价值 ",应合并减运维面。B/S 集中服务端,运维只需管服务器不用管客户端——运维友好。分层即运维边界。