テスターですが何か?

ホビープログラマ略してHPです

【日本語訳】Building Windows Azure Applications with the Caching Service part9

leave a comment »

このエントリーはMSDNのチュートリアル「Building Windows Azure Applications with the Caching Service」の「Exercise3: Creating a Reusable and Extensible Caching Layer」の日本語訳になります。このコンテンツ、日本語訳全体については、こちらのエントリーを参照してください。

Exercise 3: Creating a Reusable and Extensible Caching Layer

前回、データアクセスクラスのメソッドを直接編集してデータをキャッシュ・取得するというWindows Azure Cachingの基礎的な内容について学習しました。このアプローチでもキャッシュのメリットを得ることができますが、キャッシュを有効にするには各データアクセスメソッドを変更する必要があります。既存のデータアクセスクラスを変更しないもう一つのアプローチを今回は学習します。

このエントリーでは既存のデータアクセスクラスの上にキャッシュ層を構築し、簡単な設定変更によって異なるキャッシュプロバイダーを利用できるように、また、キャッシュを使用しないように変更できるようにします。

このキャッシュ層用に CachedDataSource という名前のキャッシュ用抽象クラスを作成し、キャッシュへのデータ保存・削除機能を提供します。そして、派生クラスを実装してアプリケーションのどんなデータソースも同じようにキャッシュできるようにします。必要なことはデータへアクセスする方法を実装することだけです。キャッシュの抽象クラスがキャッシュプロバイダーをカプセル化しているため、コンストラクターでプロバイダーを指定し、キャッシュを操作するメソッドを実装するだけで構いません。

キャッシュ用クラスのデータ取得メソッドはキャッシュされたデータ、データソースからデータを取得するデリゲート、キャッシュをいつ破棄するかというポリシーを一意に識別するキーを受け取ります。このメソッドは、まずキャッシュからデータを検索し、コピーが見つからなければデータソースからのデータ取得を行い、キャッシュに保存するという古典的なキャッシュのパターンで実装されています。

この CachedDataSource は再利用可能なように実装されており、仕様に応じて様々なキャッシュプロバイダーを利用することができます。キャッシュプロバイダーを指定するには、コンストラクタに ObjectCache インスタンスを渡します。ObjectCacheクラスはSystem.Runtime.Caching名前空間の一部で、すべてのアプリケーションにキャッシュ機能を提供数rために.NET Framework 4から導入されました。この抽象クラスはオブジェクトのキャッシュを表しており、もととなるキャッシュにアクセスするための抽象メソッド・プロパティを提供しています。.NET Frameworkではこれを計測したクラス(MemoryCache)を提供しており、ローカルのメモリ上のキャッシュへアクセスする昨日を実装しています。

CachedDataSource から派生したクラスで提供されるキャッシュ機能を使用するには、特定のキャッシュプロバイダーに対応した ObjectCache の実装を提供する必要があります。よいアプローチとしては、仕様にあったキャッシュ実装を選択できるようにデータソースファクトリーを作成することです。設定ファイルの変更によって、簡単にキャッシュプロバイダーを変更できるようにします。

現時点では Windows Azure Caching は独自の ObjectCache 実装を提供していません。しかし、ラッパークラスを独自に作成することはできます。「BuildingAppWithCacheService\Source\Assets」フォルダにあるAzureCacheProviderはそのような実装例のサンプルです。このクラスは ObjectCache クラスから派生しており、Windows Azure Cachingのサービスを公開しています。

Azure Storeアプリケーションでこのきゃっしゅの独自実装の利点を得るためには、ProductRepositoryクラスにに対応するキャッシュクラスを作成する必要があります。このProductepositoryはIProductRepositoryインターフェースを1つのGetProductsメソッドで実装しており、SQL Azureから商品情報を取得しています。商品情報をキャッシュするソースを作成するには以下の手順で実装を行います。

  • CachedDataSourceを継承したCachingProductsRepositoryクラスを作成する
  • 新規クラスにキャッシュではないデータソースのインスタンスであるIProductRepository型と、キャッシュプロバイダーのインスタンスであるObjectCache型の引数を受け取るコンストラクタを作成します
  • 基本クラスでRetrievedCachedDataメソッドを呼び出し、元となるデータソースクラスを呼び出すデリゲートを提供することで、IProductRepositoryインターフェースの各メソッドの実装を提供します

次は「Task1 – Implementing a Caching Data Source Base Class」です。

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中

%d人のブロガーが「いいね」をつけました。