深入理解松散耦合事件(LCEs)与 COM+ 事件机制
1. 松散耦合事件(LCEs)概述
传统的紧密耦合事件(TCE)技术虽然有用,但在某些场景下存在明显缺点:
-生命周期紧密耦合:发布者和订阅者的生命周期紧密相连,订阅者必须运行并连接到发布者才能接收事件。在企业系统中,要求订阅者始终运行的扩展性不佳。
-不适应分布式环境:TCE 技术未考虑分布式环境,像连接点技术在建立和断开连接时所需的往返次数较多,效率不高,且无法保证持久连接。
-缺乏事件过滤机制:订阅者可能会收到所有事件,即使只对部分事件感兴趣。
为解决这些问题,可采用松散耦合事件(LCE)系统。在 LCE 系统中,发布者和订阅者在更高抽象层次上绑定,二者生命周期不再紧密耦合。若订阅者在事件触发时未运行,系统会自动启动它;订阅者也可在无发布者运行时订阅事件。
实现 LCE 系统的一种简单方法是让发布者维护一个包含订阅者 CLSID 的外部数据库。当触发事件时,发布者遍历数据库中的每个 CLSID,实例化对象并调用其方法。不过,这种设计存在两个问题:
- 每个发布者都需开发和维护管理订阅数据库的代码。
- 缺乏订阅事件和定义事件过滤器的标准流程。
COM+ 定义了一种标准机制来发布和订阅 LCE 事件,即 COM+ 事件,解决了上述问题。
2. COM+ 事件架构
COM+ 事件架构提供了管理和维护订阅数据库的内置逻辑,同时定义了发布者宣传事件信息和订阅者定位并订阅事件的标准格式。其架构