次の方法で共有


リースの更新

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

リースが作成された後に、そのリースで変更できるプロパティは ILease.CurrentLeaseTime だけです。リースを更新するには 2 つの方法があります。1 つはクライアントが ILease.Renew を直接呼び出す方法で、もう 1 つはスポンサーに接続してリースの更新を要求する方法です。

スポンサー

スポンサーは、ホスト アプリケーション ドメインからの要求をリッスンして特定のオブジェクトのリースを延長します。スポンサーは ISponsor を実装し、リースへの参照を取得してから ILease.Register を呼び出すことでリース マネージャーに登録されます。一般的に、1 つのリモート オブジェクトに多くのクライアントが存在する場合は、リモート オブジェクトからクライアントのいずれかにリースの更新の要求を送信する方が、すべてのクライアントからリモート オブジェクトに要求を送信するよりも効率的です。

8xw7t072.note(ja-jp,VS.100).gif注 :
.NET Framework Version 1.1 以降で、サーバー オブジェクトの有効期間に参加するスポンサーを登録するためには、サーバー アプリケーション ドメインとスポンサーの両方で自動逆シリアル化の設定を Full にする必要があります。詳細については、「.NET リモート処理での自動逆シリアル化」を参照してください。

スポンサーを使用する場合、多数のクライアントに 1 つの動的な更新ポリシーも提供されます。これにより、1 つ以上のクライアントが複数のリモート オブジェクトに対して問題解決を要求する場合に、効率的な処理ができる可能性があります。リモート オブジェクトから解決策が返されると、スポンサーは通知を受けて、他のすべてのリモート オブジェクトのリースを期限切れにします。

リモート オブジェクトはその現在の場所からクライアントに接続するのであって、クライアントがリモート オブジェクトを探す必要はないため、この方法はリモート オブジェクトを別のコンピューターに移行する場合にも役に立ちます。

また、スポンサーが大規模なネットワーク上に存在していたり、多くのファイアウォールを使用するインターネット上に存在する場合、接続するのが難しくなることがあります。これに対処するには、バックアップ スポンサーを持つか、ホスト アプリケーション ドメインの近くにスポンサーを配置してある程度の信頼性でスポンサーに接続できるようにします。

ホスト アプリケーション ドメインのリース マネージャーは、スポンサーの一覧を管理します。スポンサーがリースの期間を更新する必要がある場合、一覧の先頭のスポンサーが期間の更新を要求されます。スポンサーが ILease.SponsorshipTimeout で指定された期間内に応答しないと、そのスポンサーは一覧から削除され、一覧の次のスポンサーが呼び出されます。

スポンサーを使用したリースの更新

スポンサーは、有効期間リースに参加するために、特定のオブジェクト参照のリースを取得し、自らをスポンサーとして登録して、リモートのリース マネージャーが ISponsor.Renewal を呼び出すまで待機します。オブジェクト リースを取得するには、RemotingServices.GetLifetimeService を呼び出し、リースを必要とするオブジェクトをパラメーターとして渡します。この呼び出しは、RemotingServices クラスの静的メソッドです。オブジェクトがアプリケーション ドメインにローカルな場合、この呼び出しのパラメーターはオブジェクトへのローカル参照となり、返されるリースはそのリースへのローカル参照になります。オブジェクトがリモートの場合、プロキシがパラメーターとして渡されます。リース自体が参照渡しのマーシャリング (MBR: Marshal-By-Reference) オブジェクトであるため、リモート オブジェクトからリースを取得すると、リースに対するプロキシが返されます。したがって、リースでメソッドを呼び出す場合は、サーバー プロセスに対してリモート呼び出しを行っています。

次に、オブジェクトが作成されたばかりの場合は、Register を呼び出し、スポンサーおよびオプションの TimeSpan オブジェクトを渡して、スポンサーをリモートのリース マネージャーに登録します。

このオブジェクトのリースが期限切れになると、リース マネージャーはリモート スポンサーにコールバックする場合があります。その Renewal の実装に対するスポンサーの戻り値が、新しいリース期間になります。

参照

処理手順

方法 : リースを更新する

リファレンス

<lifetime> 要素
リモート処理設定スキーマ

概念

リモート処理の例 : 有効期間
有効期間リース
リースの初期化