COM+ 事件类对象

COM+ 事件服务使用事件类对象来管理发布服务器和订阅服务器之间的连接。 事件类对象是由 COM+ 事件系统管理和存储的 COM+ 组件,包含发布服务器用于触发事件的接口和方法。 这是一个持久对象,会指示可能发生的事件,还可以根据需要标识发布服务器。 通过提供类型库,可以指定希望事件类包含的接口和方法。

若要触发事件,发布服务器可调用 CoCreateInstance 或 Microsoft Visual Basic CreateObject 方法并请求返回事件接口,以便实例化事件类对象。 已实例化的事件类对象包含所请求接口的事件系统实现。 感兴趣的订阅服务器还必须实现事件类接口,以便从给定发布服务器接收事件。 实例化事件类对象后,事件系统会将其与相应的订阅服务器相关联。 将在事件类对象的生存期内维护订阅服务器列表。 事件可以串行或并行传送到多个订阅服务器。

实现事件类对象时,应提供导出 DllRegisterServerDllUnregisterServer 函数的自注册 DLL。 DllRegisterServer 函数将注册 COM 类,而 DllUnregisterServer 函数将注销组件。 可使用组件服务管理工具,或者以编程方式使用 ICOMAdminCatalog::InstallEventClassICOMAdminCatalog::InstallMultipleEventClasses 接口的方法,将事件类对象存储在 COM+ 目录中。 有关注册事件类对象的详细信息,请参阅注册事件类

由于事件类对象是配置的组件,因此可以使用组件服务管理工具或 COM+ 管理 SDK 函数为它们配置其他属性,例如队列、事务、安全性等。

注意

COM+ 事件服务使用类型库封送。 这会对事件类接口实施一些限制。 例如,类型库封送器不支持 MIDL 属性 size_islength_is

 

事件类对象拥有用于确定事件发布方式的发布属性,以及以下属性:

  • EventCLSID。 指定组件的 CLSID 的唯一标识符。
  • EventClassName。 指定组件的 PROGID 的唯一标识符。
  • TypeLibrary。 提供事件类对象提供的接口列表。 无需实现类型库中指定的触发接口。

COM+ 事件安全注意事项

筛选 COM+ 中的事件

在 COM+ 中发布和传送事件

订阅

将 COM+ 事件与 COM+ 排队组件配合使用