BlueDavy的
关于Plugin Framework的关键因素 提到了几点
1、 Plugin的编写
一个好的Plugin System对Plugin没有任何编码上的要求,要求的只是其描述文件的编写
2、 Plugin的部署
如何更加方便的去部署一个Plugin,考虑中根据配置从相应的目录或网站搜索Plugin并注册到系统中
3、 Plugin的调用
根据Plugin的描述采取相应的方式调用Plugin,例如webservice方式、socket方式等等
4、 Plugin的交互
也许可以参考Maven的方式,比如需要调用其他的plugin,则采用类似这样的配置或调用<attain plugin=”pluginname” function=”sendmail”/>抑或采用IoC容器注入依赖??
5、 Plugin的扩展
对于Plugin的扩展,这个Eclipse的扩展点完全值得参考
6、 Plugin的依赖关系的分析
这是我构思中的一个东西,希望系统所有的模块都基于此Plugin Framework,然后我们可以根据这些模块Plugin来分析整个系统中各模块的依赖关系等等,并进行监控,甚至在将来可以图形化的进行配置,图形化搭积木式的搭建自己的系统,^_^
我发现,这个插件体系结构,和SOA中的SCA体系结构,还有Spring中的Beans工厂,有很多相似之处的,如下:
1. SCA的编写:
需要继承SCA的接口。不过,我倒是更加喜欢spring的方式,使用bean来配置一套系统,对每个bean没有编码限制
2. SCA的部署
使用scdl.xml进行部署描述。如果scdl.xml存在于网络中,是否能部署成功这个倒是不清楚。spring中直接使用xml描述,主要是各个Beans的配置
3. SCA的调用
使用binding进行组合调用,现在支持的有SCA Binding、WebService Binding等等。spring中使用属性注入和构造器注入
4. SCA的交互
使用import/export来暴露具体的接口,然后进行调用。直接使用IOC,注入依赖,相互交互是依靠使用预定义接口,实现契约。
5. SCA的扩展
可以使用继承来修改原来的模块,并在运行时通过替换SCA模块达到目的。Plugin的扩展点(Extension Point)的概念到时值得仔细考虑,非常灵活的。Spring中,通过修改配置文件,使用不同的beans来扩展原有系统。
6、 SCA的依赖关系
好像现在ESB中还没有Service Register的实现,其实,分析SCA的配置文件,是可以找到这些依赖的。本来就是一个总线结构的啊。spring中beans工厂的配置文件现在倒是有很多基于eclipse的实现。
先写这几条,这几天在仔细研究这些技术