エクスポート (0) 印刷
すべて展開

通知 (Azure Cache 用 In-Role Cache)

更新日: 2010年7月

noteメモ
アプリケーションに対して適切な Azure Cache サービスを選択するためのガイダンスについては、「どの Azure Cache を利用すればよいですか。」を参照してください。

Azure は、キャッシュ クラスターに対してさまざまなキャッシュ操作が行われたときに、アプリケーションで非同期の通知を受信できるキャッシュ通知を提供しています。ローカルにキャッシュされたオブジェクトを自動で無効にすることもできます。

非同期キャッシュの通知を受信するには、キャッシュ通知のコールバックをアプリケーションに追加します。コールバックを追加した場合、キャッシュ通知をトリガーするキャッシュ操作の種類と、指定した操作が発生した場合にアプリケーションで呼び出されるメソッドを定義します。名前付きキャッシュを選択して、キャッシュ通知を有効にする必要があります。

インロール インロール キャッシュ を使用している場合のみ、通知がサポートされます。Shared Caching の使用時、通知はサポートされません。またこれは、Shared Caching でローカル キャッシュを無効にするために通知を使用できないということを意味します。

これらのキャッシュ操作は、DataCacheOperations クラスのメンバーによって定義されます。

地域に関する以下のキャッシュ操作が発生した場合、アプリケーションで通知を受信することができます。

  • CreateRegion: キャッシュ内で地域が作成された場合。

  • ClearRegion: キャッシュ内の地域がクリアされた場合。

  • RemoveRegion: キャッシュから地域が削除された場合。

キャッシュされたオブジェクト (「キャッシュ内の項目」とも呼ばれています) に対して以下のキャッシュ操作が発生した場合、アプリケーションでキャッシュ通知を受信することがあります。

  • AddItem: 項目がキャッシュに追加された場合。

  • ReplaceItem: キャッシュ内で項目が置き換えられた場合。

  • RemoveItem: キャッシュから項目が削除された場合。

noteメモ
これらの項目操作は単独で、地域内で発生したかどうかには依存していません。コールバックの通知範囲を特定の地域に制限することを選択できます。これについては、このマニュアルの「通知の範囲」で説明します。

アプリケーションのアクティビティとニーズに応じて、キャッシュ全体のすべてのオブジェクトと地域に注意を払う必要がない場合があります。通知の範囲をキャッシュレベルから、地域レベルや項目レベルに狭めることができます。コールバックの追加時に選択する通知の範囲によって、どのキャッシュ通知を受信するかが大きく影響を受けます。

キャッシュ レベルでは、キャッシュ内のすべてのオブジェクトおよび地域からのすべてのキャッシュ操作の通知を、アプリケーションで受信することができます。地域レベルでは、キャッシュ内の単一の地域やオブジェクトからのキャッシュ操作に関する通知だけを、アプリケーションで受信します。項目レベルでは、単一のオブジェクトに関連するキャッシュ操作に関する通知だけを、アプリケーションで受信します。

通知範囲を指定するには上記の 3 種類の方法のいずれかを選択して、キャッシュ通知のコールバックを追加します。

  • AddCacheLevelCallback: すべての地域や項目で発生している、地域および項目に基づくキャッシュ操作の通知を受信する場合。

  • AddRegionLevelCallback: 特定の地域で発生している、地域および項目に基づくキャッシュ操作の通知を受信する場合。

  • AddItemLevelCallback: 特定の項目で発生している、項目に基づくキャッシュ操作の通知を受信する場合。

キャッシュ クライアントが受信する通知の順番は、単一の地域というコンテキスト内で保証されます。たとえば、RegionA という名前の地域を作成したとします。キャッシュ地域内に配置されるすべてのデータは同じ地域に制限されるため、RegionA に関するすべてのキャッシュ操作 (地域レベルの通知範囲) は、相互に相対的な順番でキャッシュ クライアントに着信します。他のキャッシュ ホストで発生した地域ベースおよび項目ベースの操作が、RegionA で発生した操作に相対する順番で着信するとは限りません。

パフォーマンスに関しては、同じ地域に保存されない複数の地域またはオブジェクトに関する通知の順番は、保証できません。

項目イベントのバージョン情報 (DataCacheItemVersion オブジェクトの形式) は、version パラメーターを使って、キャッシュ通知によって起動されるメソッドに渡されます。この DataCacheItemVersion オブジェクトは、項目イベントをトリガーしたオブジェクトのバージョンに対応します。CompareTo メソッドを使用することによって、バージョンを比較して、どのキャッシュ操作が最初に発生したかを決定します。

noteメモ
バージョンの比較は、同じキーを使って指定された同じ項目のバージョンを比較した場合にのみ意味を持ちます。キーが異なるバージョンを比較することで順番を推測することはできません。CompareTo メソッドは結果を返すことはありますが、結果は同じキーのバージョンに対してのみ有効です。

キャッシュ通知を使用する場合、アプリケーションは一定の間隔でキャッシュ クラスターを確認し、新しい通知を使用できるかどうかを確認します。この間隔はポーリング間隔と呼ばれていますが、既定で 300 秒ごとに設定されています。頻繁に書き込みを行うアプリケーションでこの値を小さく設定する際に、キャッシュに対する変更が頻繁に発生しない場合、大きな間隔の方が望ましいことがあります。既定値 (300 秒) はほとんどの一般的なキャッシュにとって適切な値です。

ポーリング間隔はアプリケーション構成設定に秒単位で指定されます。特定の間隔を指定するには、適切な構成ファイル内の clientNotifications 要素の pollInterval 属性を使用できます。また、DataCacheFactoryConfiguration オブジェクトの NotificationProperties プロパティを使って、特定のポーリング間隔をプログラムで指定することもできます。

キャッシュ ホストは、一定量のキャッシュ操作のみをメモリに保持できます。そのため、キャッシュ ホスト キュー内の通知が削除される前に、一部のキャッシュ クライアントが通知を受信できない可能性があります。また、他のクラスターが実行されている場合でも、キャッシュ サーバーのエラーが原因でデータが失われると、キャッシュ クライアントが通知を受信できない可能性があります。これらのケースでは、障害通知を使うことで、キャッシュ クライアントは一部のキャッシュ通知が不足していることを検出できます。アプリケーションで AddFailureNotificationCallback メソッドを使用して、コールバックを追加して、障害通知を受信することができます。詳細については、「How to: Add a Failure Notification Callback」を参照してください。

通知の損失とキャッシュ クライアントの損失には重要な違いがあります。アプリケーションで 1 つまたは複数の通知を喪失した場合、障害通知を利用することで、その喪失を認識することができます。キャッシュ クライアント全体が停止、再起動、または失われた場合、通知はトリガーされません。キャッシュ クライアントがクラスターに接続できない場合に、次にキャッシュを使用しようとすると、キャッシュ クライアントから例外がスローされます。キャッシュ クライアントのイベント (キャッシュの作成や削除など) は通知で報告されません。通知の登録後にキャッシュをサーバーから削除しても、通知の受信が停止されるだけです。キャッシュが存在しないことと、キャッシュで操作が実行されていないことを区別することはできません。

noteメモ
キャッシュ通知は、クラスター内のリージョンとキャッシュ アイテムのデータに関連する変更のみを報告します。クラスター自体のイベントについては報告しません。

キャッシュ通知機能は、キャッシュ レベルのクラスター構成設定で構成されます。通知は、キャッシュを初めて作成するときに、キャッシュのプロパティとして有効にすることができます。新しいキャッシュを作成するときに、既定でキャッシュ通知機能は無効です。

キャッシュ通知を受信するためにコールバックを追加するには、アプリケーション構成設定は必要ありません。アプリケーション構成設定を使って、特定のポーリング間隔を指定できます。既定のポーリング間隔は 300 秒です。別の期間を指定するには、XML ベースのアプリケーション構成ファイルで clientNotification 要素を使用するか、DataCacheFactoryConfiguration オブジェクトの NotificationsProperties プロパティを使って、目的の間隔をプログラムで指定します。

キャッシュ通知を有効にした後、キャッシュ通知の使用に関して 3 つのタスクがあります。キャッシュ通知のコールバックの追加、障害通知のコールバックの追加、およびキャッシュ通知のコールバックの削除です。これらの各タスクの手順については、この後説明します。

関連項目

表示:
© 2014 Microsoft