基于Eclipse Equinox的插件框架:TPF

这篇blog是继之前的一篇提升C/S结构软件的管理性的延续,在这篇blog中会更加的实际的去介绍基于Eclipse Equinox实现的一个插件框架,而不再是象上篇中那样的提及的想法而已了,通过这篇blog来展现目前一个这样的插件框架的实际应用的情况,为了更加形象的表达,在文中会贴出一些目前这个系统的截图。
这个框架的简称为TPF,是目前我所做的产品的底层框架,TPF本身构建于Eclipse Equinox之上,Equinox做为OSGI R4的RI,提供了OSGI R4的全部实现,而且同时它还结合了Eclipse IDE做为插件平台的优势之处,所以是一个非常优秀的插件框架,但相对需要强大管理性的应用系统来说,基于Equinox还是缺少了一些做为基于微核的系统的管理性,TPF就是为了满足这个而实现的,TPF主要的目标就是:
1、形成以TPF为微核的系统
      Equinox其实也是一个具备微核特征的插件框架,在Equinox中只需要System Bundle是正常运行的,那么就可以通过它来完成基于它之上的所有插件的管理,但对于系统级别而言,更多时候需要的是一种基于系统级别的控制,也就是统一控制基于Equinox的插件,统一的进行重启、停止和启动这样的管理,而同时由于Equinox仅仅提供了console方式的管理,这对于用户来说通常会有点麻烦,所以在TPF中提供的是web形式的管理。
      在一个拥有TPF的系统的图示通常是这样(写基于TPF不太正确,因为其他的Bundle并不需要依赖于TPF):
      tpfapp.jpg
      对于基于Equinox的系统而言,只需要安装上TPF的Bundle,便可拥有TPF提供的方便了:
      通过TPF可更加方便的对插件进行安装、管理(停止、更新、启动);
      index.JPG
      可以对插件的元信息(MANIFEST.MF)以及插件外带的一些配置文件的信息进行直接的修改,同时更是提供了更为方便的设置插件启动顺序的方法以及更加形象标明插件作用的插件名的设置的功能;
      info.jpg
      微核系统的特征,可统一启动或停止系统中的插件,方便了对于用户而言的管理功能。
      appman.jpg
      从这些特性上可以看出,在Equinox中安装了TPF的几个Bundle后,就可以更加方便的对插件进行管理了,同时也可以形象的感觉到微核系统的特征,即不论系统处于启动还是停止状态,只要微核运行是正常的,那么系统就可以通过微核来进行管理、扩充功能以及修改功能的,而微核通常来讲都是非常稳定的,在拥有这样特征的系统中,形象的说就是可以在项目开始的第一天在客户处部署一个系统,从此以后无论是更新版本还是如何,系统都是永远保持在运行状态的。
2、增强的管理特性
      在TPF中除了上面所说的一些插件管理功能的提升之外,最重要的就是增加了对远程同样基于TPF系统的监控,在TPF中可以监控远程TPF系统的运行状态,同时还可对远程的TPF系统进行启动、停止的管理动作。
      remoteman.jpg
TPF由三个Bundle共同构成,基于tpf.core可以实现其他方式的管理端,如client UI方式的管理端,JMX管理端等;tpf.webshell这个Bundle则提供了目前看到的web管理的方式,如不需要web管理则直接不安装这个bundle就可以了或停止这个bundle(在需要的时候启动就可以了);tpf.api提供了管理远程TPF的接口,如不需要远程管理,也可不安装这个bundle或停止这个bundle。

为了能更加清楚的说明TPF带来的影响,画了张简单的时序图:
tpfstart.JPG
这张图表达出了在安装上TPF Bundles后,其他App Bundles的生命周期包括启动顺序等是由TPF Bundles来控制,而不再是通过Equinox直接控制了,此时TPF Bundles和Equinox共同构成了系统的微核。

posted on 2006-08-18 21:24 BlueDavy 阅读(6199) 评论(10)  编辑  收藏 所属分类: Plugin Architecture

评论

# re: 基于Eclipse Equinox的插件框架:TPF 2006-08-18 21:43 robbie

正如你所讲的,“写基于TPF不太正确,因为其他的Bundle并不需要依赖于TPF”,你的TPF提供了一个管理界面,类似于osgi console但强于这种命令终端也更加方便,功能更为强大,但从架构上,正如osgi bundle 也如eclipse plugin ,TPF与其它的bundle是并行在一个平面上的,而没有谁是谁的基础条件的问题,因为其它的bundle并没有依赖TPF,也没有必须知道TPF的存在。所以你上面的图就有点问题了,TPF不是作为infrastructure存在的,我觉得从概念上讲 osgi web console更为合适。:)当然前提是我的理解没有错的话。不知道TPF是否以OS的方式发布?非常关注,因为作过一段时候的基于eclipse 的IDE开发,当时eclipse 并没有完全转向osgi,随时的3.0的release,osgi便吸引了eclipse社区相当的关注。这是一个能使软件真正能有机会实现组件化开发的机会  回复  更多评论   

# re: 基于Eclipse Equinox的插件框架:TPF 2006-08-19 11:27 leowu

我感觉那个框架图也不是太贴切,其实TPF在层次上也是一个bundle而已,并不属于基础性的东西,整体图示来看的话,核心还应该是osgi,tpf放在左侧或者右侧可能更合适一些。

题外话:此外,对于远程管理,可能很多时候还要考虑防火墙的限制,那么tpf作为大型应用的客户端架构的话(例如服务器管理客户端不同功能模块),这种远程控制就要做一些调整了。  回复  更多评论   

# re: 基于Eclipse Equinox的插件框架:TPF 2006-08-19 16:36 BlueDavy

@robbie
感谢你的答复,你说的没错,由于我的一时偷懒,所以只是加了一行文字避免大家对图的误解,准确的来说TPF并不仅仅是OSGI Web console,就像我文中所说的Web console只是TPF提供的一个更加方便的管理方式可以,但如果觉得没必要的话,仍然可以不安装,TPF.core提供的API足以让你完成其他形式的管理端,TPF将以OS的方式发布。

@leowu
图的问题确实是由于我的一时偷懒表达的不够准确,但其实在安装了TPF后所有的插件不是通过System Bundle去安装和启动,而是通过TPF去安装和启动的。
对于远程管理方面的话,穿越防火墙仍然是http较为方便,而目前tpf采取的也是http的方式。  回复  更多评论   

# re: 基于Eclipse Equinox的插件框架:TPF 2006-08-19 17:28 BlueDavy

感谢robbie和leowu指出的错误,为了避免图给大家造成的误解,重新画了图,并增加了一个简单的时序图来说明下在安装TPF后对Equinox产生的影响。  回复  更多评论   

# re: 基于Eclipse Equinox的插件框架:TPF 2006-08-24 22:06 guangqing

我的理解是这样,TPF是一个web化的增强的Equinox的console,同时提供了对对于console的远程管理。那么我想问,console中管理的是不是都是在同一个JVM中运行的bundle,远程节点之间的bundle又可不可以交互呢?
我对OSGi了解不多,总感觉它讲的都是在同一个JVM的情况(也许是由于它的原始需求决定的),我不知道它可不可以解决远程服务相互交互的情况,解决这个问题好像并不是一件难事?  回复  更多评论   

# re: 基于Eclipse Equinox的插件框架:TPF 2006-08-25 11:31 BlueDavy

远程服务交互的话需要引入WebService,OSGI规范中目前只有硬件方面的远程互通的协议。  回复  更多评论   

# re: 基于Eclipse Equinox的插件框架:TPF 2007-09-07 16:09 huangmy

BlueDavy 。不知道你能不能把TPF开源,谢谢  回复  更多评论   

# re: 基于Eclipse Equinox的插件框架:TPF 2007-09-08 23:48 BlueDavy

@huangmy
TPF在今年年内一定会开源的,目前在做一些准备工作,最快的话可以在十月份完成开源的工作,多谢你的关注!
  回复  更多评论   

# re: 基于Eclipse Equinox的插件框架:TPF 2009-05-13 09:29 疯狂的奶瓶

这张图表达出了在安装上TPF Bundles后,其他App Bundles的生命周期包括启动顺序等是由TPF Bundles来控制,而不再是通过Equinox直接控制了,此时TPF Bundles和Equinox共同构成了系统的微核。


这么说,当TPF启动后,equinox就退休了,此时不就是"基于"TPF了吗?  回复  更多评论   

# re: 基于Eclipse Equinox的插件框架:TPF 2009-12-14 13:17 sjrfox

请问能给一个下载的有效连接吗??谢谢  回复  更多评论   


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


网站导航:
 

公告

 









feedsky
抓虾
google reader
鲜果

导航

<2006年8月>
303112345
6789101112
13141516171819
20212223242526
272829303112
3456789

统计

随笔分类

随笔档案

文章档案

Blogger's

搜索

最新评论

阅读排行榜

评论排行榜