30-7 之分层架构 From Patterns of Enterprise Application Architecture

接下来的几篇文章,我们将要几乎可以说是软件架构模式始祖 ( 大概 ) 的这本书 :

企业应用架构模式 Patterns of Enterprise Application Architecture - Martin Fowler

为主要内容并辅以 《 Clean Architecture 》 来理解现阶段基本的分层架构长什麽样子。

会开始写这主题主要的原因在於 :

我搞的好混乱啊 ~ 怎麽每一个人对每个 layer 与名词的定义都不太一样啊…

所以这里我才从最根源的 《 企业应用架构模式 》开始下手。

最基本的分层 - 3-Tier

为什麽要分层 ? 原因就是我们前面几篇文章,一直提的两个软件设计基本原则 :

  • 低耦合
  • 高内聚

都是为了达到这两个原则。

然在 《 企业应用架构模式 》 这本书中,有提到最基本的分层架构为 3-tier layer,分为以下三层 :

  • 表达层 ( Presentation )
  • 领域层 ( Domain )
  • 资料层 ( Data Source )

啊哟 ~ 这不就是 MVC 吗 ? 我的小脑袋当初也是这样想,然後开始考虑要不要盖上书,因为 MVC 的相关书已经够罗了 ~ 但後来往後翻,它这里定义的 MVC 好像和我想的又不太一样呢 ~

接下来我来简单说一下,这三个层级里面又分了那些,并且这也是之後的文章方向。

表达层 ( Presentation )

在这本书中的 Web Presentation 章节中,提到了我们最常听到的 『 MVC 架构』,这里会顺到比较一下我们常听到的 MVVM、MVP 有啥差别。

  • MVC vs MVVM vs MVP
  • Front Controller
  • Application Controller

领域层 ( Domain )

这个层级基本上会是所有系统最主要的核心,他的组职可以分成以下三类 :

  • 事务脚本 ( A Transaction Script’s )
  • 领域模型 ( A Domain Model’s )
  • 表模块 ( a Table Module )

基本上组织方式可以分成以上三个。

然後这里在书中事实上有提到,这里有个常见的处理方式 :

将 Domain 再切成两个层级 = Service Layer + Domain Model

详细内容会在之後的文章说明。顺到说一下,之後也会演进到 DDD 与 CQRS 的诞生,基本上应该都是属於这个层级的事情 ( 我在写这篇时的想法,所不定之後会变 )。

资料层 ( Data Source )

中文我觉得好难翻译,自已脑补一下。

  • Table Data GateWay
  • Row Data GateWay
  • Active Record
  • DataMapper

其中这个层级还会多提到这几样东西,如下 :

  • Unit of Work : 你可以想成处理资料库 transaction 的东东
  • Lazy Load
  • DataMapper
  • Repository
  • DAO

我还不知道要放那的

  • Data Transfer Object
  • Remote Facade

小总结

这篇文章应该算是之後文章的小目录,希望在写完这几篇以後,可以画出一个完整的小地图

参考资料


<<:  Day06【JS】「...」展开运算符 & 其余运算符

>>:  Day22 AWS - SignUp & MFA

虹语岚访仲夏夜-24(专业的小四篇)

我慢慢的告诉小路,我记得的事,包括那个R... 小路一直强调,只有我一个人参加,然後,不会有什麽NP...

【Day11】:库函数包装—对於底层暂存器的操纵(下)

C语言对暂存器的封装 封装汇流排和外设基地址 为了方便使用者理解和记忆,我们把汇流排基地址和外设基地...

Day30-台湾菜鸟工程师除错之卷五

不过当我这样想的时候 有时候事情真的不会按照你所想的去发展 过了几天之後 营业就直接通知我 恭喜!...

[Day15]汇总函数(分组函数)

汇总函数是以多笔资料列为基础,输入的资料列经过函数运算後,一组只会输出一个值,基本特性如下: 可将一...

[2020铁人赛Day29]糊里糊涂Python就上手-Pandas的观念与运用(下)

今日目标 学习了解 Python Pandas 资料存取与运用视觉化呈现数据 DataFrame 资...