Plugin System現在的流行程度已經勿庸置疑了,在N多的白皮書、解決方案中都可以看到即插即用這樣的詞語,而市場上面向構件、插件的軟件也是越來越多,其實插件式的組裝系統或者說”搭積木”式的組裝系統一直就是軟件界的追求,但對于Plugin System還是有些迷惑的地方,還望大家一起討論討論,^_^,目前的Plugin Framework基本都是一種Kernel+Core Plugins組成的結構體系,說出來就是all are plugins,^_^,典型的就如Eclipse,其實Maven也算的上的
通常一個Plugin Framework的職責就是:
1、 搜索相應目錄,并將目錄下可作為Plugin的部分注冊到Plugin Framework中
2、 提供外部調用Plugin的方法
3、 Plugin之間相互交互的方法
4、 Plugin的加載,根據其描述構建相應的ClassLoader
5、 Plugin的編寫說明
當然,一個好的Plugin Framework應該還提供Plugin開發向導,Plugin開發、調試、部署的IDE等等
主要希望就下面幾點來進行討論,呵呵,當然,大家也可以增加一些大家認為值得討論的部分:
1、 Plugin的編寫
你構思中一個好的Plugin System會要求Plugin如何編寫,我考慮中一個好的Plugin System對Plugin沒有任何編碼上的要求,要求的只是其描述文件的編寫。
2、 Plugin的部署
Plugin的部署,如何更加方便的去部署一個Plugin,就象Osgi可以通過網絡訪問等等,考慮中根據配置從相應的目錄或網站搜索Plugin并注冊到系統中
3、 Plugin的調用
對于Plugin的調用,根據Plugin的描述采取相應的方式調用Plugin,例如webservice方式、socket方式等等
4、 Plugin的交互
對于Plugin的交互,也許可以參考Maven的方式,比如需要調用其他的plugin,則采用類似這樣的配置或調用<attain plugin=”pluginname” function=”sendmail”/>抑或采用IoC容器注入依賴??
5、 Plugin的擴展
對于Plugin的擴展,這個Eclipse的擴展點完全值得參考
6、 Plugin的依賴關系的分析
這是我構思中的一個東西,希望系統所有的模塊都基于此Plugin Framework,然后我們可以根據這些模塊Plugin來分析整個系統
中各模塊的依賴關系等等,并進行監控,甚至在將來可以圖形化的進行配置,圖形化搭積木式的搭建自己的系統,^_^
也希望能聽到大家關于Plugin Framework技術方面的更多東西,例如采用Osgi實現Plugin Framework的實現思路等等