COM+ 事件類別物件
COM+ Events 服務會使用 事件類別物件 來管理發行者與訂閱者之間的連線。 事件類別對像是 COM+ 事件系統管理和儲存的 COM+ 元件,包含發行者用來引發事件的介面和方法。 它是一個持續性物件,指出可能發生的事件,並選擇性地識別發行者。 您可以藉由提供類型連結庫,指定您想要事件類別包含的介面和方法。
若要引發事件,發行者會呼叫 CoCreateInstance 或 Microsoft Visual Basic CreateObject 方法來具現化事件類別物件,並要求傳回事件介面。 具現化事件類別物件包含要求介面的事件系統實作。 感興趣的訂閱者也必須實作事件類別介面,以接收來自指定發行者的事件。 具現化事件類別物件時,事件系統會將它與適當的訂閱者產生關聯。 訂閱者清單會維護事件類別物件的存留期。 事件可以串行化或平行方式傳遞至多個訂閱者。
當您實作事件類別物件時,應該提供自我登錄 DLL,以匯出 DllRegisterServer 和 DllUnregisterServer 函式。 DllRegisterServer 函式會註冊 COM 類別,而 DllUnregisterServer 函式會取消註冊元件。 事件類別物件會儲存在 COM+ 目錄中,方法是使用元件服務管理工具,或透過程式設計方式使用 ICOM 管理員 Catalog::InstallEventClass 或 ICOM 管理員 Catalog::InstallMultipleEventClasses 介面。 如需註冊事件類別對象的詳細資訊,請參閱 註冊事件類別。
因為事件類別對象已設定元件,所以可以使用元件服務管理工具或 COM+ 管理員 istrative SDK 函式來設定其他屬性,例如佇列、交易、安全性等。
注意
COM+ 事件服務會使用類型連結庫封送處理。 這會對事件類別介面進行一些限制。 例如,類型連結庫封送處理器不支援 MIDL 屬性size_is和length_is。
事件類別對象擁有決定發行事件方式的發行集屬性,以及下列屬性:
- EventCLSID。 指定元件 CLSID 的唯一識別碼。
- EventClassName。 指定元件 PROGID 的唯一標識碼。
- TypeLibrary。 提供事件類別物件所提供的介面清單。 不需要實作類型連結庫中指定的引發介面。
相關主題