知识卡片

分层架构用冗余换取复杂度可控

普通读书笔记卡 · 1684.a

内容

分层架构强制请求逐层传递、不能跳层访问,好处是把系统依赖收敛成简单的两两依赖,任何一层改动的影响范围都可预期;代价是每层都要写近乎重复的转发代码,即使”查看头像”这种极简单功能也要在展示层、业务层、持久层各写一遍相似方法。这种冗余看似啰嗦,但比起绕过分层直接跨层调用带来的长期维护混乱,更划算。发散:这是典型的”用局部形式化冗余换取全局可维护性”的取舍,类似取舍在很多强约束的架构规范里都能看到。

参考来源

- 位置:《从0开始学架构》第38章《33|传统的可扩展架构模式:分层架构和SOA》(源文件:_epub-src/OEBPS/Text/part0037_split_001.html、part0037_split_002.html) - 结论依据:原文明确"分层结构的这种约束,好处在于强制将分层依赖限定为两两依赖,降低了整体系统复杂度……但分层结构的代价就是冗余,也就是说,不管这个业务有多么简单,每层都必须要参与处理",并以"查看头像"这一最简单功能为例说明"按照分层分册架构来实现,每层都要写一个简单的函数"。 - 原始内容:分层结构的这种约束,好处在于强制将分层依赖限定为两两依赖,降低了整体系统复杂度……但分层结构的代价就是冗余……我以用户管理系统最简单的一个功能"查看头像"为例……但按照分层分册架构来实现,每层都要写一个简单的函数。