核心用法
Layered (N-Tier) Architecture 是一种经典软件架构范式,通过将系统划分为多个逻辑层级(通常为 3-5 层),强制实现关注点分离。核心层级包括:
- 表现层 (Presentation):UI 组件、MVC 控制器
- 应用层 (Application):服务编排、用例协调器
- 领域层 (Domain):业务实体、领域服务、业务规则
- 数据访问层 (Data Access):仓储模式、ORM、DAO
关键约束是依赖方向强制向下:每层只能依赖紧邻的下一层,禁止向上依赖或跨层调用。
显著优点
1. 结构清晰:为开发团队提供熟悉的认知模型,降低协作摩擦
2. 职责分离:合规与运维团队可清晰追踪 UI/业务逻辑/持久化的边界
3. 可测试性:各层可独立单元测试,领域层尤其易于隔离验证
4. 技术栈灵活:层内技术选型相对独立,如前端可用 React/Vue,后端数据层可切换 ORM
5. 治理友好:配合 ArchUnit、NDepend 等工具可实现自动化架构合规检查
潜在局限
- 伸缩性瓶颈:整体部署单体,无法独立扩展特定层
- 延迟累积:多层传递可能导致性能损耗,跨层协作需频繁“透传”代码
- 刚性陷阱:严格分层对复杂业务逻辑支持不足,频繁跨层通信会违反设计初衷
- 现代替代:微服务、事件驱动架构在独立部署、弹性伸缩场景下更具优势
适合人群
- 中等规模系统(非高并发、非实时处理场景)
- 需要明确合规边界的企业应用(金融、ERP、政务系统)
- 单体遗留系统重构,代码清晰度与分离度退化时的过渡方案
- 多团队协作但共享统一部署周期的场景
常规风险
"Leaky Layers"(层泄漏):开发者为求便捷绕过架构规则,导致分层名存实亡。需在 CI/CD 中强制集成依赖校验工具(如 dependency-validator、layer-enforcer),将违规视为构建失败。