【架構】筆記一 | 初識框架與架構
核心內容
- 元件是達到可複用要求的模組
- 架構是設計圖紙,框架是工程師
系統與子系統
“系統”的維基百科定義:
系統泛指由一群有關聯的個體組成,根據某種規則運作,能完成個別元件不能單獨完成的工作的群體。它的意思是“總體”“整體”或“聯盟”。
”子系統“的維基百科定義:
子系統也是由一群有關聯的個體所組成的系統,多半會是更大系統中的一部分。
子系統的定義和系統定義是一樣的,只是觀察的角度有差異,一個系統可能是另外一個更大系統的子系統。
例如
- 微信本身是一個系統,包含聊天、登入、支付、朋友圈等子系統
- 朋友圈這個系統又包括動態、評論、點贊等子系統
無論是系統還是子系統相對於自身系統而言,整個系統都是由個體也就是模組
模組與元件
- 都是基於功能劃分的單位
- 模組是從業務維度上職責的劃分
- 元件是技術維度上的複用
從設計上來看,元件強調複用,模組強調職責(內聚、分離),或者說元件是達到可複用要求的模組。
模組和元件都是系統的組成部分,只是從不同的角度拆分系統。
框架與架構
- 框架關注的是“規範”,是面向程式設計或配置的半成品
- 架構關注的是“結構”,是軟體系統的金字塔結構
所謂結構,是指任何一件事情都可以看做一個系統。
而任何一個系統,都有多個元素(個體)組成,這些系統組成的元素之間的關係形成結構
而規範就是要求按照這個結構進行操作的一個標準
架構是設計圖紙,目的是“做什麼”;框架是工程師,目的是“做出來”。
選擇不同的框架就是選擇不同的工程師。
哪怕是基於同一張設計圖紙不同的工程師(不同的框架)做出來的效果各不一樣(效能的差異)。
比如說Spring MVC框架這個工程師,他拿著MVC架構這張設計圖開發出來web應用了。
- 這個web應用是MVC架構設計的,是基於Spring MVC框架開發的
(這個web工程是按照MVC設計圖紙開發的,是Spring MVC工程師做的) - Spring MVC框架基於MVC架構設計開發了這個web應用
(Spring MVC工程師按照MVC這設計圖紙做出了這個web工程)
當我們想造一房子時,我們可以自己學習成為工程師(造輪子)來建造,但也許更好的選擇是聘請專業的工程師(現成框架),我們提供材料(編寫模組或元件)讓其快速實現目標。
哪怕是一個“學生管理系統”,它的部署是“Nginx+Web伺服器+MySQL”,這也是一種“架構”,因為體現出設計思想。
知識覆盤
當我們在談架構的時候,其實是在談什麼?
設計思想
當我們在談框架的時候,其實是在談什麼?
設計思想的具體化(用Spring、JSF、GWT哪個實現)
如何正確介紹一個系統的架構與框架?
這個XXX系統是基於XXX 架構設計,基於XXX 框架開發的
小結
- 系統是基於架構設計,基於框架開發,由模組或元件構造。
- 凡是可以體現出設計思想的都可以看做是架構,凡是可以根據設計開發出產品的都可以看做框架。
最後,把“框架”比如成“工程師”,也許一下子理解不過來。其實框架就像是給程式設計師定製的開發腳手架,是一種半成品,是一種工具。就好比對於僱主我來說,要造房子,那麼對於“造房子”這目標達成來說,工程師就是這達成過程中藉助的一樣工具。我給他設計圖紙,他看得懂設計圖紙,那麼他就可以造得出來。
————————————————————————————
筆記來源