COM+ イベント クラス オブジェクト
COM+ Events サービスでは、 イベント クラス オブジェクト を使用して、パブリッシャーとサブスクライバーの間の接続を管理します。 イベント クラス オブジェクトは COM+ イベント システムによって管理および格納される COM+ コンポーネントであり、パブリッシャーがイベントを発生させるために使用するインターフェイスとメソッドを含みます。 これは、発生する可能性があるイベントを示し、必要に応じてパブリッシャーを識別する永続的なオブジェクトです。 タイプ ライブラリを指定して、イベント クラスに含めるインターフェイスとメソッドを指定します。
イベントを発生させるために、パブリッシャーは、 CoCreateInstance メソッドまたは Microsoft Visual Basic CreateObject メソッドを呼び出し、イベント インターフェイスを返すように要求することで、イベント クラス オブジェクトをインスタンス化します。 インスタンス化されたイベント クラス オブジェクトには、要求されたインターフェイスのイベント システムの実装が含まれています。 関心のあるサブスクライバーは、特定のパブリッシャーからイベントを受信するイベント クラス インターフェイスも実装する必要があります。 イベント クラス オブジェクトがインスタンス化されると、イベント システムによって適切なサブスクライバーに関連付けられます。 サブスクライバーの一覧は、イベント クラス オブジェクトの有効期間中は維持されます。 1 つのイベントは、複数のサブスクライバーに順次または並列で配信できます。
イベント クラス オブジェクトを実装するときは、 DllRegisterServer 関数と DllUnregisterServer 関数をエクスポートする自己登録 DLL を指定する必要があります。 DllRegisterServer 関数は COM クラスを登録し、 DllUnregisterServer 関数はコンポーネントの登録を解除します。 イベント クラス オブジェクトは、コンポーネント サービス管理ツールを使用するか、 ICOMAdminCatalog::InstallEventClass または ICOMAdminCatalog::InstallMultipleEventClasses インターフェイスのメソッドを使用してプログラムによって COM+ カタログに格納されます。 イベント クラス オブジェクトの登録の詳細については、「イベント クラスの登録」を参照してください。
イベント クラス オブジェクトは構成されたコンポーネントであるため、キュー、トランザクション、セキュリティなどの他の属性は、Component Services 管理ツールまたは COM+ Administrative SDK 関数を使用して構成できます。
Note
COM+ Events サービスでは、タイプ ライブラリのマーシャリングが使用されます。 これにより、イベント クラス インターフェイスにいくつかの制限が設けられます。 たとえば、タイプ ライブラリ マーシャラーは、MIDL 属性 size_is および length_isをサポートしていません。
イベント クラス オブジェクトには、イベントの発行方法を決定するパブリケーション属性と、次のプロパティがあります。
- EventCLSID. コンポーネントの CLSID を指定する一意識別子。
- EventClassName. コンポーネントの PROGID を指定する一意識別子。
- TypeLibrary. イベント クラス オブジェクトによって提供されるインターフェイスの一覧を提供します。 タイプ ライブラリで指定された起動インターフェイスを実装する必要はありません。
関連トピック