架构分层设计

0 概述

本文主要在实际工作积累,谈谈个人对架构分层的理解。

1 为什么要分层

  • 如果你的业务非常简单,完全可以不分层,反而分层只会增加工作量
  • 如果业务稍微复查一些,如果不分层将会难以维护,牵一发而动全身,试下想下如果页面上需要展示用户会员等级时候,如果没有分层那么将从头改到尾。
  • 分层的目标是软件易维护、可扩展,让每一层的职责单一(高内聚),每一层只能依赖同层下一层,不乱调用(低耦合)。

2 经典分层架构

最为常见的经典的三层架构:接口层(user interface)、业务逻辑层(business logic)、数据访问层(data access),这种架构比较适合业务规模不是很复杂的场景。
在这里插入图片描述

3 DDD 分层架构

Evans在《领域驱动设计》中提到的分层架构

  • api 层与外部用户/系统交互的,常见的如RPC接口,HTTP接口
  • 应用层 组织整个应用的流程,对领域层域服务进行流程编排完成相应的工作
  • 领域层 系统核心层,负责表达业务概念、规则、状态,完成领域中属于自己应有的行为而不是完成业务,比如人具体吃个能力,是个与业务无关的行为。具体是吃的西瓜还是苹果由上层的Manager 或者Service 来决定(业务来)。
  • 基础设施层,基础设施层围绕领域层、应用层、接口层提供支撑
    在这里插入图片描述