#article/done/published
#架构
#三层分形架构
学习架构的时候,都会要到各种各样的分层架构,如传统三层、四层、DDD、六边形、MVC、MVP、MVVM 等等,而且还在不断有新的分层方法。
真的需要不断的学习这么多的分层方法么?有没有可以学习一个万能的分层方法呢?
架构方法论 —— 三层分形架构尝试使用一个方法论来生成适用的分层方法。
为什么要分层?#
分层的本质是聚焦。传统三层聚焦业务逻辑,MVC 聚焦交互流程控制,ORM 聚焦数据映射,DDD 聚焦领域服务。
如何分层?#
首先一个软件系统的核心是业务逻辑,聚焦业务逻辑就有了第一个层,业务逻辑层。
业务逻辑并不能直接为用户使用,想要应用业务逻辑就需要一个交互层(或者叫展现层、接入层)。
业务逻辑也能不能凭空构建,需要其他的应用来支撑,所以还需要一个基础层(或者叫数据层)。
还需要其他的层次吗?
目前来看不需要了。
这里的基础层,同时也是其他系统的应用。也就是一个系统的应用是其他系统的支撑,一个系统的核心依赖其他系统的应用。因为系统与系统、系统与用户间的关系无非是支撑和依赖,所以这已经覆盖了所有的情况。
什么是三层分形架构?#
那么为什么 DDD 的分层会有四层,网络会有 7 层,等等超过三层的设计呢?
三层以上的设计其实是在三层的基础上,将其中一层再聚焦一个不同核心重新划分出的三层。
比如核心层再聚焦实体和聚合,那么应用领域实体就需要应用服务层,支持领域实体就需要仓库、领域事件总线等支撑。
在交互层中,聚焦交互流程控制,核心层便是控制器,应用层是视图,支撑是模型。聚焦界面的不同展示,核心层便是展示器,应用是视图,支撑是模型。
三层架构是指聚焦某一核心,根据支撑和应用关系,划分出三层的方法。
三层分形架构,是指应用三层架构方法,每个分层中再次使用三层架构的递归处理过程,因为是三层架构的重复应用,形似分形,所以命名为三层分形架构