“開架式”軟件架構(gòu)設(shè)計
早期的國內(nèi)應(yīng)用軟件產(chǎn)品,其擴展性都是相對較差的,盡管開發(fā)商也為此作過很多工作,包括二次開發(fā)工具包等等。主要原因就是這些應(yīng)用本身框架的局限 性,不具有可擴展性,在設(shè)計時我們關(guān)注的只是應(yīng)用程序的實現(xiàn),沒有關(guān)注我們的應(yīng)用應(yīng)該構(gòu)建在一種開放的框架上。(當(dāng)然開發(fā)語言本身也有一定的局限性)
“開架式”軟件設(shè)計是基于應(yīng)用程序的可擴充性提出來的,是一種軟件底層架構(gòu)的實現(xiàn)方式。他更關(guān)注應(yīng)用程序底層架構(gòu)的實現(xiàn),與具體應(yīng)用程序的實現(xiàn)無關(guān),或者說具體的應(yīng)用程序是構(gòu)建在這種架構(gòu)定義的范疇之內(nèi)的。
在這種設(shè)計思想下,我們的應(yīng)用程序框架可形象比喻成書架一樣,我們提供一個架子(規(guī)范),書架內(nèi)容的不斷豐富,就好像將不同的書(功能/插件)放在架子上一樣,當(dāng)然書需要滿足我書架尺寸的要求。
在這種框架下,提供的是一堆服務(wù)和資源以及調(diào)用和擴展這些服務(wù)及資源的規(guī)范,而這些服務(wù)和資源也是可擴展的,你可以在一個組件中編寫一些服務(wù)和 資源由框架加載并與其他的組件分享。組件的功能是由框架加載并執(zhí)行,它可以訪問框架提供的資源和服務(wù),如可以訪問界面元素,訪問數(shù)據(jù)庫、文件,調(diào)用日志服 務(wù)寫入日志、訪問多語言信息等等。
大概的運行時框架如下:
圖中的組件A和B可理解為系統(tǒng)提供的組件或者應(yīng)用程序功能性組件。
其中的關(guān)鍵就是要提供一種機制:
1、 保證組件可以被框架加載并運行,
2、 將組件中包含的資源和服務(wù)注冊到該框架中,
3、 組件訪問框架中的資源和服務(wù)的透明性。(也表現(xiàn)出組件間、組件和框架間的協(xié)作性和可訪問性)。
有了這樣的應(yīng)用程序框架,我們可以任意擴展應(yīng)用程序的功能組件,只要他遵循框架定義的規(guī)范。我們可以新增加一個組件,可以提供新的資源和服務(wù) (如果愿意),可以訪問框架中的資源和服務(wù)就好像這些都是該組件自身具有的,而組件中提供的功能可以通過配置插入到恰當(dāng)?shù)牟藛位蚬ぞ邨l供用戶調(diào)用。而這些 對用戶是透明的,他們不知道界面中的某個功能究竟來自于那一個組件。組件和組件之間是彼此獨立的離散的。
遠(yuǎn)景:
將產(chǎn)品發(fā)布成為這樣一套框架(標(biāo)準(zhǔn))和預(yù)先提供的功能組件,用戶可以到網(wǎng)上直接下載組件進行程序的升級,用戶可以根據(jù)框架定義的規(guī)范自行開發(fā), 甚至有第三方軟件公司根據(jù)框架的內(nèi)容和標(biāo)準(zhǔn)專門開發(fā)特有的功能,如軟件對GPRS、視頻會議的支持等等。也可以支持OpenSource,開放標(biāo)準(zhǔn)提供給 網(wǎng)上大量的開發(fā)者開發(fā)功能組件,作為用戶可以在網(wǎng)上找到需要的功能組件。這些或多或少已經(jīng)是一種商業(yè)模式的問題了。
優(yōu)點:
1、 擴展性極強,可以對其任意組合,
2、 因為組件和組件之間是彼此獨立的離散的,帶來的升級也是方便的,
3、 程序更新只需要下載和替換相關(guān)的組件即可,
4、 程序的架構(gòu)是嚴(yán)密的,
5、 架構(gòu)本身的升級比較容易。
缺點:
1、 性能的影響。高擴展性必然以犧牲一定性能作為代價的。
2、 功能擴展的不定性。
3、 高度共享帶來的安全性也是一個要考慮的問題。