プログラミング モデル (Windows Server AppFabric キャッシュ)

Windows Server AppFabric プログラミング モデルは、Cache-Aside プログラミング パターンにカスタマイズされています。つまり、データがキャッシュにない場合は、AppFabric 分散キャッシュではなくアプリケーションが、元のデータ ソースからキャッシュへのデータの再ロードを行う必要があります。アプリケーションのコードでは、インスタンス化された後の DataCache クラス (キャッシュ クライアントとも呼ばれます) を使用します。

キャッシュの方策

アプリケーションのコードは、キャッシュに依存しないで動作でき、キャッシュ データを常に使用できることが必須条件ではないように、設計する必要があります。キャッシュ内のデータは永続的には保持されないので、キャッシュ内のデータを使用できない場合があります。

クラスターの稼働中は、高可用性機能によって、個別のキャッシュ ホストによるコンピューターおよびプロセスの障害からは保護されます。しかし、クラスター全体がダウンする可能性があります。たとえば、多くのリード ホストがダウンした場合、クラスター全体がシャットダウンします。詳細については、「リード ホストとクラスター管理 (Windows Server AppFabric キャッシュ)」を参照してください。

他にもさまざまな理由で、キャッシュにデータがない場合があります。たとえば、キャッシュ項目の有効期限が切れた、キャッシュ項目が削除された、キャッシュ サーバーが再起動した、キャッシュ サービスが再起動された、キャッシュ クラスターが誤って再起動された、などの状況が発生する可能性があります。理由に関係なく、アプリケーション コードはキャッシュされているオブジェクトが使用できない場合はデータベース (または他のデータ ソース) にアクセスできる必要があります。

キャッシュ クライアント

キャッシュにデータを格納するには、GetCache メソッドまたは GetDefaultCache メソッドを使用して DataCache オブジェクトを取得します。インスタンス化された後のこの DataCache オブジェクトは、キャッシュ クライアントと呼ばれます。

ヒント

パフォーマンス向上のため、キャッシュが有効なアプリケーションに作成する DataCacheFactory オブジェクトの数は最小限にすることをお勧めします。DataCacheFactory オブジェクトは、キャッシュ クライアントを使用するアプリケーションのすべての部分で使用可能な変数に格納します。

さまざまなオプションを使用してキャッシュ クライアントのビヘイビアーを構成できます。これらの構成設定を指定するには、プログラムか、アプリケーション構成ファイルのどちらか一方、または両方を使用できます。キャッシュ クライアントおよび使用できるアプリケーション構成設定の詳細については、「キャッシュ クライアントとローカル キャッシュ (Windows Server AppFabric キャッシング)」および「アプリケーション構成設定 (Windows Server AppFabric キャッシング)」を参照してください。

1 つのキャッシュに複数のキャッシュ クライアントが同時にアクセスできます。このような状況は、異なるコンピューター上で実行するアプリケーションが、同じキャッシュを使用するように構成されているキャッシュ クライアントをインスタンス化することで発生する場合があります。次のコード例はこの概念を示したものです。異なるキャッシュ クライアント インスタンスで実行しているコードをコメントで示してあることに注意してください。

'Each application has a similar GetCache method call
Dim myCacheFactory As DataCacheFactory = New DataCacheFactory()
Dim catalog As DataCache = myCacheFactory.GetCache("catalog")

'One cache client saves an object to the catalog named "toy101"
Call catalog.Put("toy101", New ToyObject("toy101", "Playschool"))

'The same or different cache client retrieves the object
Dim toy As ToyObject = CType(catalog.Get("toy101"), ToyObject)

'The same or a different cache client removes the object
catalog.Remove("toy101")
//Each application has a similar GetCache method call
DataCacheFactory myCacheFactory = new DataCacheFactory();
DataCache catalog = myCacheFactory.GetCache("catalog");

//One cache client saves an object to the catalog named "toy101"
catalog.Put("toy101", new ToyObject("toy101", "Playschool"));

//The same or different cache client retrieves the object
ToyObject toy = (ToyObject)catalog.Get("toy101");

//The same or a different cache client removes the object
catalog.Remove("toy101");

関連項目

概念

Windows Server AppFabric キャッシュの物理アーキテクチャ図
Windows Server AppFabric キャッシュ論理アーキテクチャ図
キャッシュ クライアントを開発する (Windows Server AppFabric キャッシュ)

  2011-12-05