關(guān)于Plugin Framework的關(guān)鍵因素
Plugin System現(xiàn)在的流行程度已經(jīng)勿庸置疑了,在N多的白皮書、解決方案中都可以看到即插即用這樣的詞語(yǔ),而市場(chǎng)上面向構(gòu)件、插件的軟件也是越來(lái)越多,其實(shí)插件式的組裝系統(tǒng)或者說(shuō)”搭積木”式的組裝系統(tǒng)一直就是軟件界的追求,但對(duì)于Plugin System還是有些迷惑的地方,還望大家一起討論討論,^_^,目前的Plugin Framework基本都是一種Kernel+Core Plugins組成的結(jié)構(gòu)體系,說(shuō)出來(lái)就是all are plugins,^_^,典型的就如Eclipse,其實(shí)Maven也算的上的
通常一個(gè)Plugin Framework的職責(zé)就是:
1、 搜索相應(yīng)目錄,并將目錄下可作為Plugin的部分注冊(cè)到Plugin Framework中
2、 提供外部調(diào)用Plugin的方法
3、 Plugin之間相互交互的方法
4、 Plugin的加載,根據(jù)其描述構(gòu)建相應(yīng)的ClassLoader
5、 Plugin的編寫說(shuō)明
當(dāng)然,一個(gè)好的Plugin Framework應(yīng)該還提供Plugin開發(fā)向?qū)В?/SPAN>Plugin開發(fā)、調(diào)試、部署的IDE等等
主要希望就下面幾點(diǎn)來(lái)進(jìn)行討論,呵呵,當(dāng)然,大家也可以增加一些大家認(rèn)為值得討論的部分:
1、 Plugin的編寫
你構(gòu)思中一個(gè)好的Plugin System會(huì)要求Plugin如何編寫,我考慮中一個(gè)好的Plugin System對(duì)Plugin沒有任何編碼上的要求,要求的只是其描述文件的編寫。
2、 Plugin的部署
Plugin的部署,如何更加方便的去部署一個(gè)Plugin,就象Osgi可以通過網(wǎng)絡(luò)訪問等等,考慮中根據(jù)配置從相應(yīng)的目錄或網(wǎng)站搜索Plugin并注冊(cè)到系統(tǒng)中
3、 Plugin的調(diào)用
對(duì)于Plugin的調(diào)用,根據(jù)Plugin的描述采取相應(yīng)的方式調(diào)用Plugin,例如webservice方式、socket方式等等
4、 Plugin的交互
對(duì)于Plugin的交互,也許可以參考Maven的方式,比如需要調(diào)用其他的plugin,則采用類似這樣的配置或調(diào)用<attain plugin=”pluginname” function=”sendmail”/>抑或采用IoC容器注入依賴??
5、 Plugin的擴(kuò)展
對(duì)于Plugin的擴(kuò)展,這個(gè)Eclipse的擴(kuò)展點(diǎn)完全值得參考
6、 Plugin的依賴關(guān)系的分析
中各模塊的依賴關(guān)系等等,并進(jìn)行監(jiān)控,甚至在將來(lái)可以圖形化的進(jìn)行配置,圖形化搭積木式的搭建自己的系統(tǒng),^_^
也希望能聽到大家關(guān)于Plugin Framework技術(shù)方面的更多東西,例如采用Osgi實(shí)現(xiàn)Plugin Framework的實(shí)現(xiàn)思路等等
posted on 2005-05-25 15:42 BlueDavy 閱讀(3368) 評(píng)論(1) 編輯 收藏 所屬分類: Plugin Architecture