架構學習(一)概念篇

概念解釋:android

     系統編程

維基百科定義的「系統」。服務器

系統泛指由一羣有關聯的個體組成,根據某種規則運做,能完成個別元件不能單獨完成的工做的羣體。它的意思是「整體」「總體」或「聯盟」。微信

我來提煉一下里面的關鍵內容:架構

  1. 關聯:系統是由一羣有關聯的個體組成的,沒有關聯的個體堆在一塊兒不能成爲一個系統。例如,把一個發動機和一臺 PC 放在一塊兒不能稱之爲一個系統,把發動機、底盤、輪胎、車架組合起來才能成爲一臺汽車。app

  2. 規則:系統內的個體須要按照指定的規則運做,而不是單個個體各自爲政。規則規定了系統內個體分工和協做的方式。例如,汽車發動機負責產生動力,而後經過變速器和傳動軸,將動力輸出到車輪上,從而驅動汽車前進。框架

  3. 能力:系統能力與個體能力有本質的差異,系統能力不是個體能力之和,而是產生了新的能力。例如,汽車可以載重前進,而發動機、變速器、傳動軸、車輪自己都不具有這樣的能力。spa

   子系統.net

子系統也是由一羣有關聯的個體所組成的系統,多半會是更大系統中的一部分。翻譯

其實子系統的定義和系統定義是同樣的,只是觀察的角度有差別,一個系統多是另一個更大系統的子系統。

按照這個定義,系統和子系統比較容易理解。咱們以微信爲例來作一個分析。

  1. 微信自己是一個系統,包含聊天、登陸、支付、朋友圈等子系統。

  2. 朋友圈這個系統又包括動態、評論、點贊等子系統。

  3. 評論這個系統可能又包括防刷子系統、審覈子系統、發佈子系統、存儲子系統。

  4. 評論審覈子系統再也不包含業務意義上的子系統,而是包括各個模塊或者組件,這些模塊或者組件自己也是另一個維度上的系統。例如,MySQL、Redis 等是存儲系統,但不是業務子系統。

 模塊

從邏輯的角度來拆分系統後,獲得的單元就是「模塊」;劃分模塊的主要目的是職責分離;

組件

從物理的角度來拆分系統後,獲得的單元就是「組件」劃分組件的主要目的是單元複用。

「組件」的英文 component 也可翻譯成中文的「零件」一詞,「零件」更容易理解一些,「零件」是一個物理的概念,而且具有「獨立且可替換」的特色。

假設咱們要作一個學生信息管理系統,這個系統從邏輯的角度來拆分,能夠分爲「登陸註冊模塊」「我的信息模塊」「我的成績模塊」;從物理的角度來拆分,能夠拆分爲 Nginx、Web 服務器、MySQL 等組件。

框架

軟件框架(Software framework)一般指的是爲了實現某個業界標準或完成特定基本任務的軟件組件規範,也指爲了實現某個軟件組件規範時,提供規範所要求之基礎功能的軟件產品。

  1. 框架是組件規範:例如,MVC 就是一種最多見的開發規範,相似的還有 MVP、MVVM、J2EE 等框架。

  2. 框架提供基礎功能的產品:例如,Spring MVC 是 MVC 的開發框架,除了知足 MVC 的規範,Spring 提供了不少基礎功能來幫助咱們實現功能,包括註解(@Controller 等)、Spring Security、Spring JPA 等不少基礎功能。

架構 

架構是頂層設計;框架是面向編程或配置的半成品;組件是從技術維度上的複用;模塊是從業務維度上職責的劃分;系統是相互協同可運行的實體。

軟件架構指軟件系統的「基礎結構」,創造這些基礎結構的準則,以及對這些結構的描述。

單純從定義的角度來看,框架和架構的區別仍是比較明顯的,框架關注的是「規範」,架構關注的是「結構」。框架的英文是 Framework,架構的英文是 Architecture。Spring MVC 的英文文檔標題就是「Web MVC framework」。

 

雖然如此,在實際工做中咱們卻常常碰到一些似是而非的說法。例如,「咱們的系統是 MVC 架構」「咱們須要將 android app 重構爲 MVP 架構」「咱們的系統基於 SSH 框架開發」「咱們是 SSH 的架構」「XX 系統是基於 Spring MVC 框架開發,標準的 MVC 架構」……

 

好比一個學生管理系統

    能夠從多個方面分析他的架構是什麼

    1.業務邏輯角度 「學生管理系統」的架構是:

        

    2.從物理部署的角度分解 「學生管理系統」的架構是:

        

    3.從開發規範的角度分解 「學生管理系統」能夠採用標準的 MVC 框架來開發,所以架構又變成了 MVC 架構:

         

 

在此感謝李運華老師的精彩講解

你們能夠試聽課程

相關文章
相關標籤/搜索