19、事件驱动世界中的OSGi框架

事件驱动世界中的OSGi框架

1. 事件管理服务的问题

在事件驱动的应用开发中,事件管理服务(Event Admin service)存在一些问题。

  • 远程客户端问题 :在旅行社场景中,部分订阅者可能位于远程的OSGi框架实例中。然而,事件管理服务并未明确提及对远程事件处理程序的支持。这是有意为之,因为服务的远程调用由远程服务规范单独处理,不在该服务的范畴内。
  • 确定性问题 :事件管理服务缺乏确定性。当从不同线程发送事件时,无法确定哪个订阅者会首先收到通知,也不清楚事件的调度顺序。在需要可重复和确定性行为的场景中,这会成为一个问题。例如,在登录事件场景中,可能希望安全审计器总是在日志审计器之前运行,但事件管理服务无法保证这一点。

不过,尽管存在这些缺点,事件管理服务仍能提供足够的功能来支持大多数常见的事件驱动场景。而且,基于其底层的OSGi基础,在需要时可以灵活扩展其功能。

2. 使用事件进行解耦

在开发中,解耦是一个重要的目标。通过服务接口进行交互的两个捆绑包(bundles)可以实现实现层面的解耦,但它们仍然与服务接口耦合。如果服务接口发生变化,捆绑包也会受到影响。

而当两个捆绑包通过交换事件进行交互时,可以实现更高程度的解耦。因为事件没有为其使用定义契约,其耦合仅基于事件的数据,而不是任何接口。

例如,日志服务接口可能定义了 logError(String message) logWarning(String messag

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值