J2EE之巅

 

OSGi实现动态特性的关键模式

OSGi平台为我们提供了强大的动态特性,通过分析我们可以发现这些动态特性的实现与很多常用的设计模式相关,了解其中原理直接将这些模式用于我们的应用开发,也可以有效地实现动态特性。
1 Broker模式:实现服务提供者与服务使用者的分离及解耦。Bundle通过所能提供的服务将自己注册至Framework,调用者通过Framework查找所需的服务。Bundle的服务注册是实现服务自动发现的基础。
 
2 监听者模式:这是实现动态特性的关键,通过监听者模式服务的使用者(实现监听接口)可以获得所依赖的服务提供者(Bundle)的状态变化的通知,从而动态处理与服务提供者间的关系以实现动态特性,不仅如此OSGi Framework自身同样有效的融合了这种通知机制,使得实现监听者接口的Bundle可以了解Framework的状态变化。
 
在我们的应用系统中借鉴OSGi的原理,同样可以有效地实现动态特性。


蔡超
软件架构师
软件架构顾问
SCEA,SCBCD
IBM Certified Solution Designer for OOA&D vUML2
Chaocai2001@yahoo.com.cn

posted on 2008-10-15 21:40 超越巅峰 阅读(1880) 评论(4)  编辑  收藏 所属分类: Design Pattern

评论

# re: OSGi实现动态特性的关键模式[未登录] 2008-10-16 09:45 caoer

OSGi的事件监听机制与JAVA中常用的监听器模式有本质的不同,建议bz看一看下面链接:http://www.osgi.org/wiki/uploads/Links/whiteboard.pdf。本人参与开发的项目也是基于OSGi框架的,希望以后能够相互沟通。  回复  更多评论   

# re: OSGi实现动态特性的关键模式 2008-10-16 10:59 蔡超

@caoer

多谢了这篇大作本人拜读过,其中对比了Java AWT实现的监听模式与OSGi中实现的差别,这种差别是为了满足OSGi的运行环境.在本人看来其实白板模式的原理就是BLOG中提及的两个模式组合应用,文中提到了大量Listener,EventSource的问题及Listener生命周期管理的问题, 在白板模式中通过Service Register来管理EventSource及EventSource与Listener的关系,同时Listener的生命周期也会受到OSGi平台的管理,他在注册和注销是都会产生事件.仔细分析不难发现这是Broker和Observer模式的组合应用(Broker便是Service Register),同一模式的实现会有不同,这要根据实际环境(就如文中对比的OSGi和Java AWT的不同实现)

  回复  更多评论   

# re: OSGi实现动态特性的关键模式 2008-10-16 13:58 蔡超

@caoer
"白板模式"中的白板其实就是Broker,这个模式实际是分离EventSource和Listener,在他们之间加入一个Broker白板,通过白板来管理Listener,EventSource通过白板来发送Event,从而避免了传统Observer模式中独立管理Listener带来的一些问题。



  回复  更多评论   

# re: OSGi实现动态特性的关键模式 2008-10-20 16:36 zhuxing

@蔡超
挺准的^_^
  回复  更多评论   


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


网站导航:
 

导航

统计

常用链接

留言簿(12)

随笔分类(54)

随笔档案(59)

文章分类(2)

文章档案(1)

相册

搜索

积分与排名

最新评论

阅读排行榜

评论排行榜