首页/开发/系统分析与架构设计速查/分层架构(Layered Architecture)
架构风格与模式58 条

分层架构(Layered Architecture)

按技术职责分层(表现层、业务层、持久层、数据库层),上层依赖下层;封闭层要求请求逐层经过,开放层允许跨层访问以换取性能。

分层架构是什么

分层架构按技术职责把系统切成若干层,常见划分是表现层、业务层、持久层与数据库层,上层依赖下层、下层不反向依赖上层。封闭层要求请求逐层经过,隔离性更好;开放层允许上层跳过中间层,减少透传开销但耦合上升。它是最通用的架构风格,实现简单、上手快,代价是改动常常要穿过整条链路,层数过多时大量请求只是在逐层透传。

基本信息

层次示例表现层 → 业务层 → 持久层 → 数据库
封闭层禁止跨层调用,隔离性更好,测试更独立
开放层允许上层跳过中间层,减少透传损耗
依赖方向单向向下,下层不得反向依赖上层
常见落地单体应用、MVC 框架应用、后台管理系统

分层职责与违规

层职责常见违规
表现层参数校验、会话管理、视图编排直接拼 SQL 或内嵌业务规则
业务层业务规则与事务边界依赖 Web 上下文对象,无法独立测试
持久层对象映射与查询组装向上层返回框架专有实体
数据库层schema、约束与索引用触发器承担业务规则,逻辑不可见

典型使用场景

  • 中小型业务系统:团队规模小、变更节奏平稳,分层收益高于分布式复杂度
  • 系统起步阶段:先把结构与依赖方向立住,为后续拆分留出边界
  • 企业后台与管理系统:以表单和流程为主,分层足以支撑
  • 模块化改造前:先用分层隔离技术细节,再按业务域重划分包
  • 教学与评审:用分层讲清依赖方向与职责边界,直观易懂
  • 合规审计场景:分层便于做代码扫描与越权访问检查
判断分层是否失效看两点:请求是否大量逐层透传、业务规则是否散落在表现层与触发器里;出现任意一种就该调整边界而不是继续加层。
分层是技术维度切分,不解决业务边界问题;同一个业务流程仍会横跨所有层,因此高频变更的系统常需要向按业务域划分的方式演进。

易错点

  • 业务规则写进表现层或数据库触发器,同一规则在多处重复且互相矛盾
  • 层间大量无逻辑透传(sinkhole),每次新增字段都要改四个文件,节奏被拖慢
  • 下层反向依赖上层(持久层引入 Web 上下文),单元测试必须启动整个框架
  • 把“分层”做成分层目录模板,却不校验依赖方向,跨层调用随手就写
  • 在分层之上继续叠加微服务,业务规则位置未定义,链路更长而耦合未降

数据来源与参考

  • 《软件架构:架构模式、特征及实践指南》(Richards & Ford)
  • 《Patterns of Enterprise Application Architecture》(Fowler)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌