1. 程式人生 > >【架構】筆記一 | 初識框架與架構

【架構】筆記一 | 初識框架與架構

核心內容

  • 元件是達到可複用要求的模組
  • 架構是設計圖紙,框架是工程師

系統與子系統

系統”的維基百科定義:
系統泛指由一群有關聯的個體組成,根據某種規則運作,能完成個別元件不能單獨完成的工作的群體。它的意思是“總體”“整體”或“聯盟”。
子系統“的維基百科定義:
子系統也是由一群有關聯的個體所組成的系統,多半會是更大系統中的一部分。

子系統的定義和系統定義是一樣的,只是觀察的角度有差異,一個系統可能是另外一個更大系統的子系統。
例如

  • 微信本身是一個系統,包含聊天、登入、支付、朋友圈等子系統
  • 朋友圈這個系統又包括動態、評論、點贊等子系統

無論是系統還是子系統相對於自身系統而言,整個系統都是由個體也就是模組

元件構成的。

模組與元件

  • 都是基於功能劃分的單位
  • 模組是從業務維度上職責的劃分
  • 元件是技術維度上的複用

從設計上來看,元件強調複用,模組強調職責(內聚、分離),或者說元件是達到可複用要求的模組

模組和元件都是系統的組成部分,只是從不同的角度拆分系統。

框架與架構

  • 框架關注的是“規範”,是面向程式設計或配置的半成品
  • 架構關注的是“結構”,是軟體系統的金字塔結構

所謂結構,是指任何一件事情都可以看做一個系統。
而任何一個系統,都有多個元素(個體)組成,這些系統組成的元素之間的關係形成結構

而規範就是要求按照這個結構進行操作的一個標準

架構是設計圖紙,目的是“做什麼”;框架是工程師,目的是“做出來”。

選擇不同的框架就是選擇不同的工程師。

哪怕是基於同一張設計圖紙不同的工程師(不同的框架)做出來的效果各不一樣(效能的差異)。

比如說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 框架開發

小結

  • 系統是基於架構設計,基於框架開發,由模組或元件構造。
  • 凡是可以體現出設計思想的都可以看做是架構,凡是可以根據設計開發出產品的都可以看做框架。

最後,把“框架”比如成“工程師”,也許一下子理解不過來。其實框架就像是給程式設計師定製的開發腳手架,是一種半成品,是一種工具。就好比對於僱主我來說,要造房子,那麼對於“造房子”這目標達成來說,工程師就是這達成過程中藉助的一樣工具。我給他設計圖紙,他看得懂設計圖紙,那麼他就可以造得出來。

————————————————————————————

筆記來源