基于Equinox开发系统的总结

Equinox,我不想多做介绍,相信很多人都有所了解了,不了解的可具体去www.eclipse.org/equinox看看。
最近基于equinox做了一个系统,还是碰到了一些问题,当然也得到了在插件体系架构下的不少优点,在这里也做个总结。
总体而言,基于equinox做开发对于大多数java开发人员来说应该不会有太多改变的感觉,最多改变的感觉应该是带给设计师,设计师需要有发挥插件体系架构优点以及减少其带来的缺点的能力,^_^
1、部署不是很方便
      equinox默认提供的是一个console端的插件部署管理,部署起来需要通过"install reference:file://"这样的方式来安装插件,不是特别的方便。
      ^_^,由于我当时使用的时候equinox还没提供osgi中httpservice的实现,便使用了oscar中提供的httpservice的实现,基于这个httpservice的实现写了一个web端的插件管理的工具,呵呵,将来整理后会将这个bundle公布出来,到时大家直接下载就可以用了。
      在部署方面还有一个不方便的地方就是不能指定插件的启动顺序,现在equinox是通过config.ini中来实现插件启动顺序的控制的,这个在我的web端的插件管理工具中也提供直接,可直接设定插件的启动顺序。
2、Classpath的问题
      这个问题是我在使用equinox时比较头疼的一个问题,我在bundle中使用了spring IoC container,而由于spring中使用的不是当前类的加载器,导致在加载配置文件的时候会出错,只得直接修改了spring中那些部分的代码,将其改为使用当前类的加载器。
       在集成其他一些自己含有classpath的东西的时候也很容易出现这个问题。
       虽然从原理上来讲这个是可以理解的,因为在插件体系结构中每个插件都拥有独立的插件类加载器,这个确实会对集成的有些东西产生影响,抑或我们应该理解为集成的那些东西在这方面设计有缺陷?
3、有利于面向接口编程的执行
      这个应该说是属于插件体系结构的好处,每个插件可以控制自己对外所暴露的包,这个时候就可以只暴露接口所在的包,^_^,呵呵,面向接口的编程就这么被强制的执行了。
4、插件开发的IDE
      这点是我觉得equinox的天然优势,拥有一个eclipse这么优秀的插件开发的IDE,^_^
      支持了插件的调试...
      我认为的最重要的一点是它解决了插件依赖的问题,通常在出现project依赖的时候我们都需要引用该project或是该project生成的jar,而在插件体系结构中只需要在插件文件中定义所依赖的包即可,这个就解决了去引用project那样方式引起整个项目工程包混乱和开发不便的现象。
5、插件的测试
      这点我想也是大家很关心的,不过大家可以放心,基本没什么不同的,unit test继续使用Mock方式完成所测试的unit的外部依赖的部分,集成测试则需要启动equinox容器,这点应该没什么不能接受的。
6、Bundle和Service的定义
      这个就是插件体系结构带来的一个挑战,如果准确的定义系统中的bundle和service是很关键的一个问题,这对于发挥插件体系结构的bundle级别、service级别的重用性至关重要,同时对于整个项目结构的清晰度也会产生很大的影响,形成bundle的清晰的service依赖结构。
7、面向服务的体系
      我想这也同样是象equinox这样的插件框架引发使用者的思考,系统采用的应该是一种面向服务的体系,服务才是系统的核心,bundle只是一个管理器而已,这个时候怎么样设计出动态、松散耦合的服务体系是很关键的。

equinox一直都在发展之中,它的maillist一直就非常的热闹,而且现在对于osgi中的service它基本都实现了,也已经开始提供对于servlet container集成的支持,^_^,极度支持equinox,虽然它还需要不断的努力.....
可以看得出,经过我上面的总结,大家其实要担心的是引用一种新的体系结构带来的设计层面的变革,而不是开发实现层面,^_^ 

posted on 2006-03-12 21:32 BlueDavy 阅读(5286) 评论(9)  编辑  收藏 所属分类: JavaPlugin Architecture

评论

# re: 基于Equinox开发系统的总结 2006-03-14 11:30 破门

呵呵,整理的不错啊。
是不是准备招募插件管理框架的合作开发人员?:)

ClassPath和启动问题的确会有很多困扰,不过这也说明了在Equinox还有很多可以发展的空间。比如 Boundle和IOC的接合就需要好好探讨一下。

SOA么,暂时还没有什么想法,只是觉得以前Apache Avalon中提出了很多不错的概念和实现,那样一个项目的关闭还是让人有些遗憾的,希望能够在Equinox应用过程中有所突破。

可配置性、可管理性、反转控制、MVC等等这些优秀特性如何在Equinox中应用值得大家努力来发展。
  回复  更多评论   

# re: 基于Equinox开发系统的总结 2006-08-09 11:14 Steven

请问Equinox怎么能兼容老的plugin呢,怎么能把plugin.xml 所定义的 plugin 迁移为 MANIFEST.MF 定义的 bundle 呢?  回复  更多评论   

# re: 基于Equinox开发系统的总结 2006-08-09 17:18 BlueDavy

@Steven
迁移只需要把以前在plugin.xml中编写的信息移植到MANIFEST.MF中就可以了,对于两者Eclipse都提供了图形化的界面,很容易就可以完成这步...  回复  更多评论   

# re: 基于Equinox开发系统的总结 2007-09-29 00:00 fxfx

版主整理的很好啊!
我是个初学者,有个问题想请教。在eclipse 中我要新建个plug-in工程,里面有个选项就是这个新建的plug-in 是运行在eclipse上 还是运行在equinox上。
我的理解是若面向eclipse的话可能是要开发一个rcp程序,而运行在equinox上是要开发一个服务bundle系统,这个系统需要osgi的一个控制台来启动各个插件。我的问题是,若要开发一个基于服务组件的系统的话,可以基于equinox,但要是希望能够利用rcp的一些插件(或者说仍然希望能有个漂亮基于rcp的界面)那么如何来集成这两个框架。

谢谢版主。写了很多,希望能给个建议。
我qq:406746058



  回复  更多评论   

# re: 基于Equinox开发系统的总结 2007-09-29 00:03 fxfx

还有就是版主能不能给推荐一个可供学习的基于equnnox的开源项目。  回复  更多评论   

# re: 基于Equinox开发系统的总结 2007-09-29 09:12 BlueDavy

@fxfx
...RCP本身就是基于Equinox而搭建出来的..
至于基于Equinox的学习性质的开源项目,在我的新的Opendoc写完后会相应的公布。
  回复  更多评论   

# re: 基于Equinox开发系统的总结 2007-10-04 15:46 fxfx


版主所说的“RCP本身就是基于Equinox而搭建出来的”,那么插件在基于eclipse 3.3和equinox这个两个平台上运行有什么区别吗?

另外,如果一个我自己开发的rcp程序要想实现插件的start和stop(osgi可实现)又如何操作呢?

请版主详细的给说说。
谢谢  回复  更多评论   

# re: 基于Equinox开发系统的总结 2007-10-04 19:51 BlueDavy

@fxfx
插件在基于Eclipse和Equinox运行可能会有差别,那就要看你的插件是否是基于RCP扩展出来的,Eclipse就是部署一些插件到Equinox上而形成的。

开发的RCP程序要实现插件的start、stop非常容易,方法也是直接调用OSGi的Bundle接口的方法,如bundle.stop、bundle.start这些方法,建议你先仔细看看《OSGi实战》Opendoc,在里面的规范解释部分有些描述。
  回复  更多评论   

# re: 基于Equinox开发系统的总结 2007-10-05 10:21 fxfx

谢谢回复!

  回复  更多评论   


只有注册用户登录后才能发表评论。


网站导航:
 

公告

 









feedsky
抓虾
google reader
鲜果

导航

<2006年3月>
2627281234
567891011
12131415161718
19202122232425
2627282930311
2345678

统计

随笔分类

随笔档案

文章档案

Blogger's

搜索

最新评论

阅读排行榜

评论排行榜