クライアント アクティベーション
クライアント側でアクティブ化されるオブジェクトは、そのオブジェクトがクライアントのローカルで生成された場合と同様に、有効期間が呼び出し元のアプリケーション ドメインによって制御されるオブジェクトです。クライアント アクティベーションでは、クライアントがサーバー オブジェクトのインスタンスの生成を試行したときにサーバーとのやり取りが発生し、サーバー上でのリモート オブジェクトの生成からの戻り値によって取得されたオブジェクト参照 (ObjRef) を使用して、クライアント プロキシが生成されます。クライアントがクライアント側でアクティブ化される型のインスタンスを生成するたびに、そのインスタンスは、リースが期限切れになり、メモリがリサイクルされるまで、その特定のクライアントのその特定の参照だけを処理します。呼び出し元のアプリケーション ドメインがリモート型の新しいインスタンスを 2 つ生成した場合、それぞれのクライアント参照は、その参照が返されたサーバー アプリケーション ドメインの特定のインスタンスだけを呼び出します。
COM の場合、クライアントはオブジェクトへの参照を保持することで、そのオブジェクトをメモリに保持します。最後のクライアントが最後の参照を解放すると、オブジェクトはそのオブジェクト自体を削除できます。クライアント アクティベーションは、サーバー オブジェクトの有効期間を通して同じクライアント コントロールを提供しますが、参照を維持するための煩雑さがなく、またサーバーやクライアントが存在しているかどうかを確認するために ping を続ける必要もありません。その代わりに、クライアント側でアクティブ化されるオブジェクトでは、有効期間リースを使用して、その存続期間を決定します。クライアントは、リモート オブジェクトを生成する場合に、オブジェクトの既定の存続期間を指定できます。リモート オブジェクトは、既定の有効期間の期限に達すると、期間を延長するかどうか、延長する場合はどれくらいの期間にするかをクライアントに問い合わせます。クライアントと現在通信できない場合、サーバー オブジェクトがそれ自体にガベージ コレクションのためのマークを付ける前にクライアントとの接続を試行する際の既定の待機時間も指定されます。クライアントは、サーバー アプリケーション ドメインが破棄される前にリモート オブジェクトがリサイクルされることを防ぐため、既定値として無限の有効期間を要求する場合もあります。クライアントが要求する無限の有効期間と、サーバー側でアクティブ化される無限の有効期間との違いは、無限の有効期間を持ちサーバー側でアクティブ化されるオブジェクトがその型に対するすべてのクライアント要求を処理するのに対し、クライアント側でアクティブ化されるインスタンスはそのクライアントと、そのインスタンスの生成に使用された参照だけを処理する点にあります。詳細については、「有効期間リース」を参照してください。
クライアント側でアクティブ化される型のインスタンスを生成するには、クライアント側で、プログラムにより、または構成ファイルを使用してアプリケーションを構成し、new (Visual Basic では New) を呼び出すか、Activator.CreateInstance への呼び出しでリモート オブジェクトの構成を渡します。
クライアント側でアクティブ化される型のインスタンスの生成方法の詳細については、「方法 : クライアント側でアクティブ化される型のインスタンスを生成する」を参照してください。
参照
処理手順
方法 : クライアント側でアクティブ化される型のインスタンスを生成する
概念
リモート オブジェクトのアクティべーション
リモート アプリケーションの構成
サーバー アクティベーション
有効期間リース