描述軟件架構(gòu)與框架之間的區(qū)別與聯(lián)系
一、軟件框架
?軟件框架是面向領(lǐng)域(如ERP、計(jì)算領(lǐng)域等)的、可復(fù)用的“半成品”軟件,它實(shí)現(xiàn)了該領(lǐng)域的共性部分,并提供了一些定義良好的可變點(diǎn)以保證靈活性和可擴(kuò)展性。也就是說(shuō)軟件框架是領(lǐng)域分析結(jié)果的軟件化,是領(lǐng)域內(nèi)最終應(yīng)用的模板。
隨著軟件規(guī)模的擴(kuò)大、應(yīng)用廣泛和軟件復(fù)用技術(shù)的發(fā)展,以子程序和類(lèi)為單位的軟件復(fù)用出現(xiàn)了很多的不足之處:
(1)子程序的庫(kù)越來(lái)越龐大以至于其使用人員難以掌握
(2)大多數(shù)類(lèi)的粒度很小,其自身不能完成所有有用的功能
正是因?yàn)檫@些原因,使得人們?cè)趶?fù)用中將一組類(lèi)(模塊)作為一個(gè)整體來(lái)考慮,由此出現(xiàn)了軟件框架。而軟件框架中至少包含以下組成部分:
(1)一系列完成計(jì)算的模塊,成為構(gòu)件
(2)構(gòu)件之間的關(guān)系及交互機(jī)制
(3)一系列可變點(diǎn)(熱點(diǎn)、或者稱(chēng)為調(diào)整點(diǎn))
(4)可變點(diǎn)的行為調(diào)整機(jī)制
開(kāi)發(fā)人員通過(guò)軟件框架行為調(diào)整機(jī)制,將領(lǐng)域中具體應(yīng)用中所特有的軟件模塊綁定到該軟件框架的可變點(diǎn)上,從而得到了最終的應(yīng)用系統(tǒng),這個(gè)過(guò)程稱(chēng)為軟件軟件框架的例化,軟件框架的存在使得開(kāi)發(fā)人員將主要的精力放在系統(tǒng)所特有的模塊的開(kāi)發(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ì)象。
- 分析了軟件的組成,說(shuō)明軟件不是一個(gè)‘原子’意義上的整體,而是有不同的部分經(jīng)過(guò)特定的接口進(jìn)行連接組成的一個(gè)整體,這對(duì)軟件開(kāi)發(fā)來(lái)說(shuō)很重要。
-
‘決策派’認(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)品線開(kāi)發(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ī)制,或者為未來(lái)系統(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)開(kāi)發(fā)人員可以只關(guān)注整個(gè)結(jié)構(gòu)中的其中某一層;
2、可以很容易的用新的實(shí)現(xiàn)來(lái)替換原有層次的實(shí)現(xiàn);
3、可以降低層與層之間的依賴(lài);
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)只能通過(guò)專(zhuān)門(mén) 突變 單元進(jìn)行變更
- 應(yīng)用層通過(guò)發(fā)送信號(hào)(一般稱(chēng) action),觸發(fā)變更
不同點(diǎn):
- Vuex把a(bǔ)ction細(xì)分成了action和mutation,分別應(yīng)對(duì)異步場(chǎng)景和同步場(chǎng)景,由store自身充當(dāng)dispatcher
- Vuex的更新是直接通過(guò)state實(shí)例,作為state方法來(lái)調(diào)用,而flux的action由view提交后,通過(guò)dispatch分發(fā)到store更新,然后再通知view更新。