Share via


同時実行メソッド

Microsoft AppFabric 1.1 for Windows Server キャッシュでは、オプティミスティックとペシミスティックの同時実行モデルをサポートしています。以下では、これらのモデルに対するキャッシュ クライアント メソッドの対応について説明します。同時実行の詳細については、「同時実行モデル (AppFabric 1.1 キャッシュ)」を参照してください。

オプティミスティック同時実行モデル

オプティミスティック同時実行モデルでは、キャッシュされたオブジェクトに対する更新はロックされません。代わりに、キャッシュ クライアントが最初に更新対象のオブジェクトのバージョンを読み取り、そのバージョン情報を更新されるオブジェクトと共に送信します。システムは、送信されたバージョンがオブジェクトの現在のバージョンと一致する場合にのみ、オブジェクトを更新します。オブジェクトに対するすべての更新で、バージョン番号が変更されます。これにより、更新によって他のユーザーの変更が上書きされるのを防ぎます。

メソッド 説明

Get

仕様により、ロックを取得しません。項目が存在する場合、Get は常に成功します。オブジェクトが更新されている場合、Get メソッドは待機せず、オブジェクトの現在のバージョンのみを返します。

GetCacheItem

すべての DataCacheItem オブジェクトを返します。キャッシュされているオブジェクトとタグなどの他の情報に加えて、オブジェクトについてのバージョン情報も返します。

GetIfNewer

キャッシュされているオブジェクトがデータ ソースで変更されているかどうかを確認するために使用できます。ネットワーク トラフィックをできるだけ少なくするため、キャッシュされているオブジェクトはより新しいバージョンが使用できる場合にのみ返されます。

Add

オプティミスティック同時実行に関するオーバーロードはありません。Add は成功または失敗します。

Put

省略可能なパラメーターとしてバージョン情報を受け取ることで、オプティミスティック同時実行をサポートします。Put は、置換対象のオブジェクトが同じバージョンの場合にのみ成功します。

Remove

省略可能なパラメーターとしてバージョン情報を受け取ることで、オプティミスティック同時実行をサポートします。Remove は、削除対象のオブジェクトが同じバージョンの場合にのみ成功します。

ペシミスティック同時実行モデル

ペシミスティック同時実行モデルでは、クライアントは明示的にオブジェクトをロックして操作を実行します。このロックが解除されるまで、ロックを要求する他の操作は拒否されます (システムは要求をブロックしません)。オブジェクトがロックされると、ロック ハンドルが (出力パラメーターとして) 返されます。オブジェクトのロックを解除するにはロック ハンドルが必要です。ロックされているオブジェクトを解放する前にクライアントが失敗した場合のため、ロックを解放するためのタイムアウトが提供されています。ロックされているオブジェクトの有効期限が切れることはありませんが、ロックが解除された後、有効期間が過ぎている場合は、直ちに有効期限が切れる場合があります。

ヒント

複数の操作にまたがるトランザクションはサポートされません。キャッシュを使用するアプリケーションは、必要に応じて、ロックの順序の決定およびデッドロックの検出を行う必要があります。

警告

キャッシュ内のロックされているオブジェクトであっても、任意のキャッシュ クライアントから Put メソッドを使用して置き換えることができます。キャッシュが有効なアプリケーションでは、ペシミスティック同時実行モデルを使用する項目については、常に PutAndUnlock を使用する必要があります。

次の表では、オブジェクトをロックおよびロック解除するために使用できるメソッドを示します。

メソッド 説明

GetAndLock

キャッシュされているオブジェクトを返してロックします (ある場合)。同じオブジェクトに対する他の GetAndLock メソッドの呼び出しは、ロックが有効である間は失敗します。通常の Get メソッドの呼び出しはブロックされず、キャッシュされているオブジェクトの最新バージョンに常にアクセスします。

PutAndUnlock

ロックされているオブジェクトを更新し、ロックを解放します。GetAndLock で取得したロック ハンドルは必須のパラメーターであり、操作が成功するにはロックされているオブジェクトのロック ハンドルと一致する必要があります。

Unlock

ロック ハンドル パラメーターがロックされているオブジェクトのものと一致する場合、キャッシュされているオブジェクトのロックを明示的に解除します。Unlock では、現在の項目の有効期限を延長し、(有効期間を過ぎてロックが解除された場合に) ロックが解除されてすぐに項目の有効期限が切れるのを防ぐこともできます。

関連項目

概念

クラスの概要
基本的なキャッシュ メソッド
タグベースのメソッド
構成メソッド
基本的なキャッシュ メソッドの使用
AppFabric キャッシュの概念 (AppFabric 1.1 キャッシュ)

  2012-03-05