架構是什么?
1. 架構和框架是什么關系?有什么區別?
1.1 系統與子系統
泛指一群有關聯的個體組成的,根據某種規則運作,能完成單個組件不能單獨完成的作業的群體,他的意思是總體,整體,或聯盟,
- 其中重點概念就是:
- 關聯,一群有關聯的個體
- 規則,通過某種規則進行分工,和作業
- 能力,系統成員都有自己的能力
- 通過系統的概念是不是也能聯想到我們現實的team,我們也可以比作一個系統(但是也有可能不是,因為有些人各自為政,不按套路,沒有規矩出牌),
- 那我們再關注一下現實中真實的系統,linux作業系統,微信系統,OA系統等等,是的,他們也是各個模塊組裝在一起,進行配合作業,各自去負責自己的作業,
1.2 模塊與組件
- 其實說到模塊和組件,在我們開發系統的時候,根據某種架構思想比如說DDD,進行架構,然后將系統分為多個模塊,在模塊中將我們使用的組件進行封裝,例如我們在專案中的util,我這句話說的對嗎?
- 什么是模塊和組件?
-
軟體模塊(Module)是一套一致而互相有緊密關連的軟體組織,它分別包含了程式和資料結構兩部分,現代軟體開發往往利用模塊作為合成的單位,模塊的介面表達了由該模塊提供的功能和呼叫它時所需的元素,模塊是可能分開被撰寫的單位,這使它們可再用和允許人員同時協作、撰寫及研究不同的模塊(wiki),
-
這怎么理解?想想我們在平時開發的模塊,就拿DDD來講吧,下圖是DDD的四層架構模型,我們在開發的時候就將他分為4個模塊,說到這是不是有點懵了!模塊?架構?為什么四層架構要分為4個模塊?架構是抽象語言,模塊是架構的具體實作?

-
軟體組件定義為自包含的、可編程的、可重用的、與語言無關的軟體單元,軟體組件可以很容易被用于組裝應用程式中,
-
- 看完上面的定義和自己的疑問,看看大佬的說法
- 模塊和組件都是系統的組成部分,只是從不同的角度拆分系統而已,
- 從邏輯角度拆分是模塊,從物理角度拆分是組件,
- 劃分模塊的主要目的是指責分離
- 劃分組件的主要目的是單元復用
- 使用列子我們消化一下
- 我們設計一個垃圾管理系統,通過邏輯將垃圾管理系統分為收集垃圾模塊,打包垃圾模塊,處理垃圾模塊,
- 從物理角度講可以分為Nginx webserver mysal等件
- 奧原來是這樣呀,看來是全部理解錯了
1.3 框架和架構
- 框架和架構的概念
- 軟體框架(Software framework)通常指的是為了實作某個業界標準或完成特定基本任務的軟體組件規范,也指為了實作某個軟體組件規范時,提供規范所要求之基礎功能的軟體產品,
- 框架是組件規范:例如,MVC 就是一種最常見的開發規范,類似的還有 MVP、MVVM、J2EE 等框架,
- 框架提供基礎功能的產品:例如,Spring MVC 是 MVC 的開發框架,除了滿足 MVC 的規范,Spring 提供了很多基礎功能來幫助我們實作功能,包括注解(@Controller 等)、Spring Security、Spring JPA 等很多基礎功能,
- 軟體架構指軟體系統的“基礎結構”,創造這些基礎結構的準則,以及對這些結構的描述,
- 單純從定義的角度來看,框架和架構的區別還是比較明顯的,框架關注的是“規范”,架構關注的是“結構”,
整體理解架構和框架
- 我們剛的舉例,垃圾管理系統從邏輯角度將的架構是:
垃圾手機,垃圾打包,垃圾處理, - 從無力角度的架構是:nginx ,web server ,mysql
- 從開發角度那就是DDD框架來開發,因此就變成了DDD架構,
- 一個垃圾系統有三種架構,是不是很屌,不同的角度就有不同的架構,在這里我們也可以了解一下著名的“4+1 視圖”
總結
- 架構是頂層設計;框架是面向編程或配置的半成品;組件是從技術維度上的復用;模塊是從業務維度上職責的劃分;系統是相互協同可運行的物體
- 架構的重新定義
- 首先,“系統是一群關聯個體組成”,這些“個體”可以是“子系統”“模塊”“組件”等;架構需要明確系統包含哪些“個體”,
- 其次,系統中的個體需要“根據某種規則”運作,架構需要明確個體運作和協作的規則,
- 第三,維基百科定義的架構用到了“基礎結構”這個說法,我改為“頂層結構”,可以更好地區分系統和子系統,避免將系統架構和子系統架構混淆在一起導致架構層次混亂,
那我們平時使用的SpringMVC 也就是基于MVC規范打造出來的一個框架,我們基于mvc框架來實作一個MVC架構的系統
或者說我們使用Axon是基于DDD的設計思想規范打造出來的一個框架,我們通過Axon實作一個DDD的框架,(個人的理解,歡迎大家批評指正)
今日思考
自己的下一步該怎么走?上一階段目標是大概達成了,最近也沒有太明確的短長期目標,設定段長期目標,
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/275449.html
標籤:其他
