構(gòu)建插件式的應(yīng)用程序框架

構(gòu)建插件式的應(yīng)用程序框架

ID:37550166

大?。?8.94 KB

頁(yè)數(shù):16頁(yè)

時(shí)間:2019-05-25

構(gòu)建插件式的應(yīng)用程序框架_第1頁(yè)
構(gòu)建插件式的應(yīng)用程序框架_第2頁(yè)
構(gòu)建插件式的應(yīng)用程序框架_第3頁(yè)
構(gòu)建插件式的應(yīng)用程序框架_第4頁(yè)
構(gòu)建插件式的應(yīng)用程序框架_第5頁(yè)
資源描述:

《構(gòu)建插件式的應(yīng)用程序框架》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫(kù)。

1、構(gòu)建插件式的應(yīng)用程序框架(一)----開篇?????說(shuō)起插件(plug-in)式的應(yīng)用程序大家應(yīng)該不陌生吧,記得很早以前有一款很流行的MP3播放軟件winmap,它是我記憶里最早認(rèn)識(shí)的一款使用插件模式的應(yīng)用程序,你可以使用他的插件管理器插入很多的音樂效果器,皮膚,甚至是歌詞顯示的面板。接下來(lái)看到了Photoshop使用插件模式管理慮鏡。最后發(fā)現(xiàn)只要是大一點(diǎn)的應(yīng)用程序基本都使用了插件式的程序框架,就拿我們最常用的工具來(lái)說(shuō)吧,VisualStudio,Office,Delphi,Eclipse等等。Eclipse將插件模式發(fā)揮到了及至,因?yàn)樗情_源的的,所以眾多的愛好者,開發(fā)

2、出了讓人應(yīng)接不暇的插件。??????為什么使用插件式的應(yīng)用程序框架呢?我的答案就是他為應(yīng)用程序的功能擴(kuò)展提供的無(wú)限的想象空間。一個(gè)應(yīng)用程序,無(wú)論你前期做了多少的市場(chǎng)調(diào)查,需求分析做的多么完美,你也只是迎合一部分人的期望,更甚,你只迎合了一部分人的一部分期望,或者一部分人在某一時(shí)間的一部分期望。所以當(dāng)程序發(fā)布以后,你依然有機(jī)會(huì)提供新的功能而不必重新發(fā)布程序,人們也可以根據(jù)自己的需要來(lái)開發(fā)新的功能來(lái)滿足自己的需求,據(jù)我所知有很多的軟件公司就是專門開發(fā)插件來(lái)賺錢,真是一舉多得,何樂而不為呢???????我們來(lái)看一些常見的提供插件模式的應(yīng)用程序是如何實(shí)現(xiàn)插件功能的。據(jù)我的使用經(jīng)驗(yàn)

3、來(lái)看,VisualStudio和Office其實(shí)都是自動(dòng)化程序,通過(guò)COM的方式提供了一組接口。開發(fā)人員可以利用這些接口來(lái)開發(fā)基于COM的插件,當(dāng)插件開發(fā)完成后,注冊(cè)COM組件。在VisualStudio中你可以使用Add-in管理器來(lái)選擇是否啟用插件,而Office似乎省去了這一步,一旦你注冊(cè)了Office插件,Office應(yīng)用程序在啟動(dòng)的時(shí)候會(huì)自動(dòng)加載插件。COM方式似乎最受微軟的寵愛,因?yàn)镃OM是一種二進(jìn)制重用標(biāo)準(zhǔn),用戶可以使用大部分流行的語(yǔ)言來(lái)開發(fā)插件。當(dāng)然你也可以使用別的方式,比如普通DLL,只是這樣對(duì)于開發(fā)人員來(lái)說(shuō)適用面就窄了,因?yàn)楦鱾€(gè)廠商DLL的內(nèi)部結(jié)構(gòu)是不

4、盡相同的,比VC開發(fā)出的DLL和BorlandC++builder開發(fā)出的DLL結(jié)構(gòu)就不同,需要專門的工具進(jìn)行轉(zhuǎn)換?,F(xiàn)在,還有另外一種方式,使用dotNet的Assembly,使用dotNet的好處是開發(fā)簡(jiǎn)單,使用也同樣簡(jiǎn)單(不需要注冊(cè)),而且你也可用通過(guò)COM互操作讓開發(fā)人員可以使用各種語(yǔ)言進(jìn)行插件開發(fā),當(dāng)然用dotNet開發(fā)還是最簡(jiǎn)單的,省去不少中間過(guò)程。?????????其實(shí)上面介紹的三種方式開發(fā)的插件最終還是寄宿在DLL中,從中我們就可以看出一些端倪。為什么使用DLL呢?DLL雖然也是PE格式,但是他是不能獨(dú)立運(yùn)行的,一般情況下,都是在運(yùn)行時(shí)加載到應(yīng)用程序的內(nèi)存空

5、間。插件模式正好是利用了這一點(diǎn),插件不是應(yīng)用程序的一部分,他以二進(jìn)制的方式獨(dú)立存在,由用戶決定是否使用他。??????那么插件是如何與應(yīng)用程序進(jìn)行交互的呢?首先必須有一個(gè)契約,應(yīng)用程序要聲明我有哪些功能是可以被插件使用的,并且具備什么條件才能成為我的插件。其次,應(yīng)ufida16用程序不依賴于插件,也就是說(shuō),沒有你插件,我也可以很好的運(yùn)行。再次,應(yīng)用程序必須有一種策略來(lái)獲取插件存在的位置,比如Visualstudio是通過(guò)注冊(cè)表的方式。最后,應(yīng)用程序可以通過(guò)某種方式動(dòng)態(tài)的加載插件。??????最近工作比較忙,沒有時(shí)間寫B(tài)log,控件開發(fā)總結(jié)的那個(gè)系列停在那里好久了,汗一個(gè),

6、有空就盡快補(bǔ)上吧。這個(gè)系列也先開個(gè)頭吧,不然又會(huì)被自己找各種借口扼殺了。構(gòu)建插件式的應(yīng)用程序框架(二)----訂立契約無(wú)論是用COM的方式,還是普通DLL,抑或.NET方式來(lái)實(shí)現(xiàn)插件框架,首先要面臨的問(wèn)題就是如何訂立契約。如同我上一篇文章講到的一樣,契約是應(yīng)用程序和插件之間進(jìn)行交互的依據(jù)和憑證。應(yīng)用程序必須聲明我有什么樣的功能可被插件使用,并且插件必須符合什么條件才能被我使用。反之,插件必須要知道應(yīng)用程序提供什么樣的功能,我才能將自己的功能融入到應(yīng)用程序的體系中。本系列文章主要講如何使用.NET實(shí)現(xiàn)插件式的應(yīng)用程序框架,所以其它的方式我就不再提了。如何使用.NET訂立契約

7、呢?首先想到的Interface,其次是抽象類,但是在插件模式中我使用接口,因?yàn)槲覀兪窃跐M足應(yīng)用程序的主要目的的基礎(chǔ)上來(lái)提供附加的插件功能,就這一點(diǎn)來(lái)說(shuō),接口更靈活,更容易擴(kuò)展。接下來(lái),如何訂立契約的內(nèi)容呢?這就要根據(jù)你的業(yè)務(wù)需求了,為了講解的方便,我們定義一個(gè)最最基本的插件式應(yīng)用程序的插件契約。我們做一個(gè)假定,我們的應(yīng)用程序是一個(gè)多文檔的應(yīng)用程序,包含一個(gè)主菜單欄,一個(gè)工具欄,菜單欄可以在程序的上下左右四個(gè)方向???,另外還有一個(gè)狀態(tài)欄。到后邊,如果有必要,我會(huì)擴(kuò)展這個(gè)應(yīng)用程序,讓他本身提供更多的可供插件使用的功能。所以就目前

當(dāng)前文檔最多預(yù)覽五頁(yè),下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁(yè),下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動(dòng)畫的文件,查看預(yù)覽時(shí)可能會(huì)顯示錯(cuò)亂或異常,文件下載后無(wú)此問(wèn)題,請(qǐng)放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫(kù)負(fù)責(zé)整理代發(fā)布。如果您對(duì)本文檔版權(quán)有爭(zhēng)議請(qǐng)及時(shí)聯(lián)系客服。
3. 下載前請(qǐng)仔細(xì)閱讀文檔內(nèi)容,確認(rèn)文檔內(nèi)容符合您的需求后進(jìn)行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時(shí)可能由于網(wǎng)絡(luò)波動(dòng)等原因無(wú)法下載或下載錯(cuò)誤,付費(fèi)完成后未能成功下載的用戶請(qǐng)聯(lián)系客服處理。