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的实现思路等等