クライアント アクティベーション

このトピックの対象は、既存のアプリケーションとの下位互換性のために残されているレガシ テクノロジに特定されています。新規の開発には、このトピックを適用しないでください。分散アプリケーションは、現在は Windows Communication Foundation (WCF) を使用して開発する必要があります。

クライアント側でアクティブ化されるオブジェクトは、そのオブジェクトがクライアントのローカルで生成された場合と同様に、有効期間が呼び出し元のアプリケーション ドメインによって制御されるオブジェクトです。クライアント側でアクティブ化されるオブジェクトが作成されると、クライアントはサーバーを呼び出します。サーバーはリモート オブジェクトをインスタンス化して、オブジェクト参照 (ObjRef) をクライアントに返します。クライアントはその ObjRef を使用して、リモート オブジェクトへのプロキシを作成します。クライアントがクライアント側でアクティブ化されるオブジェクトのインスタンスを作成するたびに、クライアントは、リースが期限切れになり、メモリがリサイクルされるまで、リモート オブジェクトの特定サーバー インスタンスと通信するプロキシを受信します。

COM の場合、クライアントはオブジェクトへの参照を保持することで、そのオブジェクトをメモリに保持します。最後のクライアントが最後の参照を解放すると、オブジェクトはそのオブジェクト自体を削除できます。クライアント アクティベーションは、サーバー オブジェクトの有効期間全体を通して同じクライアント コントロールを提供しますが、煩雑な参照の維持が行われず、またサーバーやクライアントが存在しているかどうかを確認するために ping を続ける必要もありません。その代わりに、クライアント側でアクティブ化されるオブジェクトでは、有効期間リースを使用して、その存続期間を決定します。クライアントは、リモート オブジェクトを作成する場合に、オブジェクトの既定の存続期間を指定できます。リモート オブジェクトは、既定の有効期間の期限に達すると、期間を延長するかどうか、延長する場合はその期間の長さをクライアントに問い合わせます。クライアントと現在通信できない場合は、サーバー オブジェクトがクライアントとの接続を試行する際の待機時間の既定値も指定されます。この待機時間が経過すると、サーバー オブジェクト自体にガベージ コレクションのためのマークが付けられます。クライアントは、サーバー アプリケーション ドメインが破棄される前にリモート オブジェクトがリサイクルされることを防ぐため、既定値として無限の有効期間を要求する場合もあります。このクライアントが要求する無限の有効期間と、サーバー側でアクティブ化される無限の有効期間との違いは、有効期間が無限の、サーバー側でアクティブ化されるオブジェクトがその型に対するすべてのクライアント要求を処理するのに対し、クライアント側でアクティブ化されるインスタンスが処理するのは、そのクライアントと、インスタンスの作成に使用された参照だけである点です。詳細については、「有効期間リース」を参照してください。

クライアント側でアクティブ化される型のインスタンスを作成するには、クライアント側で、プログラムにより、または構成ファイルの使用によりアプリケーションを構成し、new (Visual Basic では New) を呼び出すか、または Activator.CreateInstance への呼び出しでリモート オブジェクトの構成を渡します。

クライアント側でアクティブ化される型のインスタンスの作成方法については、「方法 : クライアント側でアクティブ化される型のインスタンスを作成する」を参照してください。

構成ファイルを使用してホスト アプリケーションを構成し、クライアント側でアクティブ化される型を作成する方法については、「<activated> 要素 (サービス インスタンス)」を参照してください。構成ファイルを使用してクライアントを構成し、クライアント側でアクティブ化される型を使用する方法については、「<activated> 要素 (クライアント インスタンス)」を参照してください。

参照

処理手順

方法 : クライアント側でアクティブ化される型のインスタンスを作成する

概念

リモート オブジェクトのアクティベーション
リモート アプリケーションの構成
サーバー アクティベーション
有効期間リース