サブスクリプション
サブスクリプション データは、サブスクリプション COM+ カタログに存在します。 サブスクリプションは、Component Services 管理ツールを使用するか、 ICOMAdminCatalog::InstallComponent インターフェイスを使用してプログラムによって作成できます。
SubscriptionsForComponent コレクションは、サブスクリプションに関連する情報を追加、削除、または変更するために使用されます。 SubscriptionsForComponent コレクションは、コンポーネントの子コレクションです。 サブスクリプションを追加するには、コンポーネントの SubscriptionsForComponent コレクションを取得し、 Add メソッドを使用してコレクションにエントリを追加します。 サブスクリプション オブジェクトのさまざまなプロパティを設定するには、 Value プロパティを使用します。 変更を保存するには、 SubscriptionsForComponent コレクション オブジェクトの SaveChanges を使用します。
また、コンポーネント サービス管理ツールを使用して、サブスクリプションのプロパティの一部 (すべてではない) を変更することもできます。 サブスクリプションでは、次の情報を指定します。
- サブスクライバーの ID と場所
- 配送方法
- 配信するイベント メソッド
- サブスクライバーがイベントを受信するイベント クラス コンポーネントのイベント クラス オブジェクトと PublisherID プロパティ
サブスクリプションは、イベント クラス オブジェクトとは別に存在します。 サブスクリプションを無効にするには、Enabled プロパティを False に設定します。 無効なサブスクリプションは、COM+ イベントによって呼び出されません。
サブスクリプションの 3 種類は次のとおりです。
-
永続的
-
永続的なサブスクリプションは COM+ カタログに存在し、サブスクライバーの有効期間から独立しています。 永続的なサブスクリプションは、システムの再起動後も存続します。 一般に、永続的なサブスクリプションは、アプリケーションがサブスクライバーのコンピューターにインストールされ、アプリケーションが削除されたときに削除されるときに作成されます。 永続的なサブスクリプションが作成されると、COM+ イベントは、イベントが配信されるたびにサブスクライバーをアクティブ化します。
パブリッシャーが イベント クラス オブジェクトをインスタンス化して呼び出すと、オブジェクトは COM+ カタログ内のすべての永続サブスクリプションを検索し、各オブジェクトの新しいインスタンスを作成します。 作成プロセスは、直接またはキューに登録されたコンポーネントのモニカーを介して行うことができます。 サブスクリプションの SubscriberMoniker プロパティでサブスクライバー オブジェクトを指定します。 永続サブスクリプションによって作成されたサブスクライバー オブジェクトは、各イベント呼び出しの後に常に解放されます。
-
一時的
-
一時的なサブスクリプションの場合は、親オブジェクトが ルート カタログ オブジェクトである TransientSubscriptions コレクションを使用できます。 一時的なサブスクリプションは、既に存在する特定のサブスクライバー オブジェクトのイベントを要求します。 一時的なサブスクリプションは COM+ カタログに格納されますが、イベント システムまたはオペレーティング システムが停止した場合、サブスクリプションは削除されます。 永続的なサブスクリプションとは異なり、一時的なサブスクリプションは特定のオブジェクトに関連付けられ、イベント システムにのみ格納されます。 一時的なサブスクリプションは永続的なサブスクリプションよりも効率的ですが、オブジェクトのライフ サイクルを管理する必要があります。 一時的なサブスクリプションの登録の詳細については、「一時的なサブスクリプションの登録」を参照してください。
-
ユーザーあたり
-
ユーザーごとのサブスクリプションでは、サブスクライバーがイベント システムのコンピューターにログオンしている場合にのみイベントを配信できます。 サブスクライバーがログオンすると、 PerUser フラグが TRUE に設定され、 UserName にログオンしているユーザーの名前が設定されているすべてのサブスクリプションがイベント システムによって有効になります。 サブスクライバーがログオフすると、サブスクリプションは無効になります。
ユーザーごとのサブスクリプションは、パブリッシャーとサブスクライバーが同じコンピューター上にある場合にのみ有効です。 ログオンとログオフは、サブスクライバー オブジェクトが存在するコンピューターではなく、パブリッシャーのコンピューターでのみ検出されます。
イベント システムは、メタイベントを使用して、イベント クラス オブジェクトまたはサブスクリプションが作成、変更、または削除されるたびに、関心のあるサブスクライバーに通知します。 イベント システムからメタ イベントを受信するには、アプリケーションで、イベント システムのコンピューター上に存在し、起動インターフェイス ID (IID_IEventObjectChange) を指定するサブスクリプションを作成する必要があります。
関連トピック