1.描述軟件架構(gòu)與框架之間的區(qū)別與聯(lián)系
- 軟件架構(gòu)(software architecture)是一系列相關(guān)的抽象模式,用于指導(dǎo)大型軟件系統(tǒng)各個方面的設(shè)計。
- 軟件框架(software framework)是指在一定的設(shè)計原則基礎(chǔ)上,從不同角度對組成系統(tǒng)的各部分進(jìn)行搭配和安排,形成系統(tǒng)的多個結(jié)構(gòu)而組成架構(gòu),它包括該系統(tǒng)的各個組件,組件的外部可見屬性及組件之間的相互關(guān)系。
區(qū)別:
- 軟件架構(gòu)是一種設(shè)計,是軟件系統(tǒng)的草圖。
- 軟件框架是一種實現(xiàn),即有限制性,又有支撐性。
聯(lián)系:
軟件框架常常會是某種軟件架構(gòu)的實現(xiàn)。
2. 以你的項目為案例
繪制三層架構(gòu)模型圖,細(xì)致到分區(qū)

image.png
從程序員角度說明三層架構(gòu)給開發(fā)者帶來的便利
- 關(guān)系分離、高級服務(wù)與低級服務(wù)分離、特定于應(yīng)用的服務(wù)與一般性服務(wù)分離。
- 減少耦合和依賴性、增強(qiáng)內(nèi)聚性、提高潛在的復(fù)用性并且使概念更加清晰。
- 很容易用新的實現(xiàn)替換原來的層次實現(xiàn)。例如對sql進(jìn)行性能優(yōu)化,并不會影響其他層的代碼結(jié)構(gòu)。有利于后期維護(hù)。
- 有利于實現(xiàn)切面編程,減輕業(yè)務(wù)的復(fù)雜程度,加快編碼效率。
- 每個層次的定位明晰,業(yè)務(wù)處理的內(nèi)容明確。依據(jù)層次,可以劃分不同的分工。開發(fā)人員可以只關(guān)注整個結(jié)構(gòu)的其中某一層。
- 接口定義也提供了良好的可擴(kuò)展性。例如數(shù)據(jù)庫從mysql切換到oracle,只需要通過配置來切換。
- 接口設(shè)計需要符合對擴(kuò)展開發(fā),對修改關(guān)閉的原則,增強(qiáng)了系統(tǒng)的安全性
研究 VUE 與 Flux 狀態(tài)管理的異同
Flux將一個應(yīng)用分成四個部分。
- View: 視圖層
- Action(動作):視圖層發(fā)出的消息(比如mouseClick)
- Dispatcher(派發(fā)器):用來接收Actions、執(zhí)行回調(diào)函數(shù)
- Store(數(shù)據(jù)層):用來存放應(yīng)用的狀態(tài),一旦發(fā)生變動,就提醒Views要更新頁面

image.png
Flux 的最大特點,就是數(shù)據(jù)的"單向流動"。
- 用戶訪問 View
- View 發(fā)出用戶的 Action
- Dispatcher 收到 Action,要求 Store 進(jìn)行相應(yīng)的更新
- Store 更新后,發(fā)出一個"change"事件
- View 收到"change"事件后,更新頁面
上面過程中,數(shù)據(jù)總是"單向流動",任何相鄰的部分都不會發(fā)生數(shù)據(jù)的"雙向流動"。這保證了流程的清晰。
Vuex實際上是Flux的一種特化實現(xiàn),用來配合Vue本身的響應(yīng)式機(jī)制。