分层是最简单的系统设计思想,其目的是抽茧剥丝,把系统从复杂水平分解为简单的逻辑切面。

再配合业务功能模块的垂直划分,一个系统就被分解为很多功能和实现及其简单的小单元。

那么在这个情况下,就可以实现大规模的协作开发协作开发: 

  1. 每个开发者只只需要按规范实现一个个很微小的单元。
  2. 每个单元都跟同层的其他单元长得一摸一样,但是相互之间没有依赖关系。
  3. 每个单元都仅仅依赖于自己下层的单元。
  4. 我们可以基于单元来评估工作量和分配任何。
  5. 最后所有的小单元开发完毕由整体性的框架来负责装配和运行起来。

​
对于事务,异常处理,日志规范等通用性的非功能需求,可以做到这个大框子里去,这就是所谓的分层框架或者脚手架。这样也就区分了功能需求和非功能需求。

这种框架在Java里,一般就是用Spring,所以Spring在2001年诞生以后给了Java在大规模开发领域一个质的飞跃。

在最简单的web系统下,我们用MVC及其变体:

  • 数据访问层DAL/DAO,以及实体 DO/EO
  • 业务处理层Service/Facade,这一层一般有事务
  • 控制粘合层Controller,这一层提供对外的访问入口Endpoint

实际上,根据我们要处理的系统业务复杂度,我们可以分出来更多不同的层级:

业务集成层,数据集成层,原子服务层,组合服务层,渠道整合层等等等。。。

比如下面是某个四大行中某家的分层:

Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐