描述軟件架構(gòu)與框架之間的區(qū)別與聯(lián)系
一亲铡、軟件框架
?軟件框架是面向領(lǐng)域(如ERP、計(jì)算領(lǐng)域等)的驯用、可復(fù)用的“半成品”軟件液兽,它實(shí)現(xiàn)了該領(lǐng)域的共性部分骂删,并提供了一些定義良好的可變點(diǎn)以保證靈活性和可擴(kuò)展性掌动。也就是說軟件框架是領(lǐng)域分析結(jié)果的軟件化,是領(lǐng)域內(nèi)最終應(yīng)用的模板宁玫。
隨著軟件規(guī)模的擴(kuò)大粗恢、應(yīng)用廣泛和軟件復(fù)用技術(shù)的發(fā)展,以子程序和類為單位的軟件復(fù)用出現(xiàn)了很多的不足之處:
(1)子程序的庫(kù)越來越龐大以至于其使用人員難以掌握
(2)大多數(shù)類的粒度很小欧瘪,其自身不能完成所有有用的功能
正是因?yàn)檫@些原因眷射,使得人們?cè)趶?fù)用中將一組類(模塊)作為一個(gè)整體來考慮,由此出現(xiàn)了軟件框架佛掖。而軟件框架中至少包含以下組成部分:
(1)一系列完成計(jì)算的模塊妖碉,成為構(gòu)件
(2)構(gòu)件之間的關(guān)系及交互機(jī)制
(3)一系列可變點(diǎn)(熱點(diǎn)、或者稱為調(diào)整點(diǎn))
(4)可變點(diǎn)的行為調(diào)整機(jī)制
開發(fā)人員通過軟件框架行為調(diào)整機(jī)制芥被,將領(lǐng)域中具體應(yīng)用中所特有的軟件模塊綁定到該軟件框架的可變點(diǎn)上欧宜,從而得到了最終的應(yīng)用系統(tǒng),這個(gè)過程稱為軟件軟件框架的例化拴魄,軟件框架的存在使得開發(fā)人員將主要的精力放在系統(tǒng)所特有的模塊的開發(fā)上冗茸,從而提高軟件的生產(chǎn)率和質(zhì)量。
軟件框架的行為調(diào)整機(jī)制是指如何針對(duì)具體的應(yīng)用調(diào)整該框架的可變部分羹铅、如何在可變點(diǎn)加入特定應(yīng)用模塊所采用的方法和規(guī)則蚀狰。
二愉昆、軟件架構(gòu)?
軟件架構(gòu)是一個(gè)系統(tǒng)的草圖职员。軟件架構(gòu)描述的對(duì)象是直接構(gòu)成系統(tǒng)的抽象組件。各個(gè)組件之間的連接則明確和相對(duì)細(xì)致地描述組件之間的通訊跛溉。
軟件架構(gòu)在定義上分為‘組成派’和‘決策派’兩大陣營(yíng)焊切,分別描述如下:
-
’組成派‘認(rèn)為軟件架構(gòu)是將系統(tǒng)描述成計(jì)算組件及組件之間的交互。它有兩個(gè)非常明顯的特點(diǎn)“:
- 關(guān)注架構(gòu)實(shí)踐的客體——軟件芳室,以軟件本身作為描述對(duì)象专肪。
- 分析了軟件的組成,說明軟件不是一個(gè)‘原子’意義上的整體堪侯,而是有不同的部分經(jīng)過特定的接口進(jìn)行連接組成的一個(gè)整體嚎尤,這對(duì)軟件開發(fā)來說很重要。
-
‘決策派’認(rèn)為軟件架構(gòu)包含了一系列的決策伍宦,主要包括:
- 軟件系統(tǒng)的組織
- 選擇組成系統(tǒng)的結(jié)構(gòu)元素和它們之間的接口芽死,以及當(dāng)這些元素相互協(xié)作時(shí)所體現(xiàn)的行為
- 如何組合這些元素,使它們逐漸合成為更大的子系統(tǒng)
- 用于指導(dǎo)這個(gè)系統(tǒng)組織的架構(gòu)風(fēng)格:這些元素以及它們的接口次洼、協(xié)作和組合
軟件架構(gòu)并不僅僅關(guān)注軟件本身的結(jié)構(gòu)和行為关贵,還注重其他特性:使用、功能性卖毁、性能揖曾、彈性、重用、可理解炭剪、經(jīng)濟(jì)以及技術(shù)的限制和權(quán)衡等
簡(jiǎn)而言之练链,框架和架構(gòu)的關(guān)系可以總結(jié)為兩句話:(1)為了盡早驗(yàn)證架構(gòu)設(shè)計(jì),或者處于支持產(chǎn)品線開發(fā)的目的念祭,可以將關(guān)鍵的通用機(jī)制甚至整個(gè)架構(gòu)以框架的方式進(jìn)行實(shí)現(xiàn)兑宇;(2)業(yè)界(及公司內(nèi)部)可能存在大量可供重用的框架,這些框架或者已經(jīng)實(shí)現(xiàn)了軟件架構(gòu)所需的重要架構(gòu)機(jī)制粱坤,或者為未來系統(tǒng)的某個(gè)子系統(tǒng)提供了可擴(kuò)展的半成品隶糕,所以最終的軟件架構(gòu)可以借助這些框架構(gòu)造。
項(xiàng)目簡(jiǎn)單三層架構(gòu)示意圖
采用三層架構(gòu)的優(yōu)點(diǎn):
1站玄、相關(guān)開發(fā)人員可以只關(guān)注整個(gè)結(jié)構(gòu)中的其中某一層枚驻;
2、可以很容易的用新的實(shí)現(xiàn)來替換原有層次的實(shí)現(xiàn)株旷;
3再登、可以降低層與層之間的依賴;
4晾剖、有利于標(biāo)準(zhǔn)化锉矢;
5、利于各層邏輯的復(fù)用齿尽。
6沽损、結(jié)構(gòu)更加的明確
7、在后期維護(hù)的時(shí)候循头,極大地降低了維護(hù)成本和維護(hù)時(shí)間
研究VUE 與 Flux 狀態(tài)管理的異同
相同點(diǎn):
- 中心化狀態(tài)管理
- 狀態(tài)只能通過專門 突變 單元進(jìn)行變更
- 應(yīng)用層通過發(fā)送信號(hào)(一般稱 action)绵估,觸發(fā)變更
不同點(diǎn):
- Vuex把a(bǔ)ction細(xì)分成了action和mutation,分別應(yīng)對(duì)異步場(chǎng)景和同步場(chǎng)景卡骂,由store自身充當(dāng)dispatcher
- Vuex的更新是直接通過state實(shí)例国裳,作為state方法來調(diào)用,而flux的action由view提交后全跨,通過dispatch分發(fā)到store更新缝左,然后再通知view更新。