緣由
因為一些特殊的機緣,接觸到洋蔥架構等一些新架構設計概念。
嘗試理解了一段時間,就想簡單梳理下對它們的理解,以達到學新而知故 😃
信息增益
以前計算機專業并不設置通信領域的信息論的專業課程,但是,信息論的知識,應該是每個計算機從業者必知必會的概念。
區別信息之間的相同與差別,找出相同和不同,才能將掌握的信息量增加,以達到學新而知故!
- 集中精神、注意觀察、多試幾次!
在多試幾次這步,信息量的增加是核心要訣,不然,都是無效的徒勞!
所以,我總在信息量不增加的情況下,寧肯抱殘守缺,并不選擇繼續重試,必須在找到新方法、新工具、新視角情況下,展開下一次嘗試!
以前積累的架構設計
- 分層設計
- MVC設計
新學習的架構
- 六邊形架構
- 洋蔥架構
架構設計更高層面的哲學
- 高內聚、低耦合
- 單一職責
- 依賴倒置,利用穩定接口將變化隔離
- 穩定之錨必須存在,不然,無法建構一個系統,猶如在沙灘上搭建房子一般
- 即使是依賴倒置這種場景,也有穩定的部分和變化的部分
分層設計
分層設計,層次之間擁有穩定的接口,但層次與層次之間在細節上無關的,代表著高內聚和低耦合、單一職責設計原則指導下的隔離。
其典型代表是網絡協議棧。
當協議棧處理網絡層IP
協議時,并不需要關心傳輸層TCP/UDP
層的具體報文,而僅僅將其看成有效載荷,進行無差別的處理而已。
- 另外,分層設計需要注意自舉能力,通過功能分解,最終完成大功能的自舉過程
MVC設計
MVC設計,按照職責進行分割系統,如以用戶為視角,從前端View,到中臺Controller,再到數據后端Model。
從結構上來看,與分層設計并無太大區別,但是,具有新意,在WEB
系統場景,使得對于理解和實踐分層設計很有幫助。
六邊形架構和洋蔥架構
兩種新的架構,著重于依賴倒置原則,將依賴外懸進行適配,或分出不同的圈層進行隔離,以利于核心業務層的穩定。
如果說,分層設計對上層的依賴僅為有效載荷
的假設,六邊形架構和洋蔥架構,則允許更多的假設,
但采用依賴倒置的辦法,在外層圈層將這些依賴固化后,而在核心層可以進行無差別的接口假設進行執行。
六邊形架構和洋蔥架構,退化來看,也是一種分層設計,但還是有所著重。在適應的場景,用其進行建構更方便,用其長處!
當分層演變為多邊形
當簡單的分層設計出現比較嚴重跨層的耦合時,例如,途中紅色的線,實際上出現多邊形結構。
這時看是否設計上向六邊形架構和洋蔥架構靠攏。
六邊形架構
洋蔥架構
樹形架構
以前剛畢業時,自己也曾有:在枝葉處確定細節,在主干區無差別地進行共同處理
此種無名氣的設計思想,是否也可以理解為,在六邊形架構和洋蔥架構之外,另外一重詮釋呢?
設計的穩定之錨
縱觀各種架構設計,居于內層的領域模型,必須是穩定之錨。
然后,合理地區分變化和穩定的關系,迭代、重構開發,誰也無法提前理解全部,哈哈