先研究一下可插拔的结构,有两个可以参考的产品: 1 Eclipse 2 Xoops
Eclipse实际是采用的OSGI 的规范,MANIFEST.MF文件来描述插件的基本内容,另外通过一个plugin.xml 来描述针对平台的扩展。
Eclipse提出了扩展点的概念。要支持扩展点,系统本身应该是可扩展的。对一个应用系统来说,也可以定义一些扩展点:例如菜单、用户的扩展的字段,都可以认为是扩展点。
要支持扩展点,系统本身最好能提供动态加载的能力,但对应用系统来说,这个倒不是最重要的,应用系统模块的增加,通过一个静态的过程也没有什么不可以。
在动态增加模块这方面,xoops提供了一个很好的范例,通过在moudles目录下增加一个子目录,来扩展一个模块。对java应用来说,这样的实现似乎还有些困难 1)公共的jar文件的扩展,一个Web应用本身,动态增加一些jar是不行的,如果采用这种思路,就得把各模块做成不同的web应用才行,甚至不同的app。2)样式的一致性,样式方面,如何保证各个模块具有类似的风格?从而各模块必须遵循相同的规范。
以一个网上书店的为例,系统可以划分为如下几个部分:
核心的系统平台,贯穿在每个模块中
权限管理模块(权限数据服务模块,权限接口模块,权限管理模块)
图书管理模块(图书数据服务模块,图书接口模块,图书管理模块)