| 层次示例 | 表现层 → 业务层 → 持久层 → 数据库 |
|---|---|
| 封闭层 | 禁止跨层调用,隔离性更好 |
| 开放层 | 允许上层跳过中间层,减少透传损耗 |
分层职责与常见违规
| 层 | 职责 | 常见违规 |
|---|---|---|
| 表现层 | 参数校验、会话与视图编排 | 直接写 SQL 或内嵌业务规则 |
| 业务层 | 业务规则与事务边界 | 依赖 Web 上下文对象 |
| 持久层 | 对象映射与查询组装 | 向上层返回框架实体 |
| 数据库层 | schema、约束与索引 | 用触发器承担业务规则 |
大量请求只是逐层透传(sinkhole)时,说明分层过细或职责划分有问题,需要合并层或调整边界。
按技术职责分层(表现层、业务层、持久层、数据库层),上层依赖下层;封闭层要求请求逐层经过,开放层允许跨层访问以换取性能。
| 层次示例 | 表现层 → 业务层 → 持久层 → 数据库 |
|---|---|
| 封闭层 | 禁止跨层调用,隔离性更好 |
| 开放层 | 允许上层跳过中间层,减少透传损耗 |
| 层 | 职责 | 常见违规 |
|---|---|---|
| 表现层 | 参数校验、会话与视图编排 | 直接写 SQL 或内嵌业务规则 |
| 业务层 | 业务规则与事务边界 | 依赖 Web 上下文对象 |
| 持久层 | 对象映射与查询组装 | 向上层返回框架实体 |
| 数据库层 | schema、约束与索引 | 用触发器承担业务规则 |