#文章 / 完成 / 已发布
#架構
#三層分形架構
在學習架構時,常會遇到各種不同的分層架構,如傳統的三層、四層、DDD、六邊形、MVC、MVP、MVVM 等等,而且還不斷有新的分層方法出現。
真的需要不斷學習這麼多的分層方法嗎?有沒有一個萬能的分層方法可以學習呢?
架構方法論 - 三層分形架構試圖使用一個方法論來生成適用的分層方法。
為什麼要分層?#
分層的本質是聚焦。傳統的三層聚焦於業務邏輯,MVC 聚焦於交互流程控制,ORM 聚焦於數據映射,DDD 聚焦於領域服務。
如何分層?#
首先,一個軟件系統的核心是業務邏輯,聚焦業務邏輯就有了第一個層,業務邏輯層。
業務邏輯並不能直接供用戶使用,想要應用業務邏輯就需要一個交互層(或稱展現層、接入層)。
業務邏輯也不能凭空構建,需要其他的應用來支撐,所以還需要一個基礎層(或稱數據層)。
還需要其他的層次嗎?
目前來看不需要了。
這裡的基礎層,同時也是其他系統的應用。也就是一個系統的應用是其他系統的支撐,一個系統的核心依賴其他系統的應用。因為系統與系統、系統與用戶間的關係無非是支撐和依賴,所以這已經覆蓋了所有的情況。
什麼是三層分形架構?#
那麼為什麼 DDD 的分層會有四層,網絡會有 7 層,等等超過三層的設計呢?
三層以上的設計其實是在三層的基礎上,將其中一層再聚焦一個不同核心重新劃分出的三層。
比如核心層再聚焦實體和聚合,那麼應用領域實體就需要應用服務層,支持領域實體就需要倉庫、領域事件總線等支撐。
在交互層中,聚焦交互流程控制,核心層便是控制器,應用層是視圖,支撐是模型。聚焦界面的不同展示,核心層便是展示器,應用是視圖,支撐是模型。
三層架構是指聚焦某一核心,根據支撐和應用關係,劃分出三層的方法。
三層分形架構,是指應用三層架構方法,每個分層中再次使用三層架構的遞歸處理過程,因為是三層架構的重複應用,形似分形,所以命名為三層分形架構