テスターですが何か?

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

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

leave a comment »

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

Task2 – Building a Caching Product Catalog Repository

前回はデータソースのデータをキャッシュする抽象クラスを作成しました、今回はProductsRepositoryクラスの代わりとなるキャッシュ機能を提供する派生クラスを作成します。このエントリーではCachedDataSourceクラスを使用してキャッシュ層を作成する際の一般的な手順について説明します。

1.MVCAzureStoreプロジェクトの「Services\Caching」フォルダに、「CachedProductsRepository.cs」という名前の新規クラスを作成します。

2.新規作成クラスに「System.Runtime.Caching」名前空間のインポート設定を追加します。

using System;

using System.Collections.Generic;

using System.Linq;

using System.Web;

using System.Runtime.Caching;

3.CachedProductsRepositoryクラスの宣言部分を変更し、「CachedDataSource」、「IProductRepository」から派生させます。

public class CachedProductsRepository : CachedDataSource, IProductRepository

{

}

Note: データソースをキャッシュするクラスはCachedDataSourceから派生してキャッシュ用のメソッドを提供し、また、オリジナルのデータソースと同じ振る舞いを実装します。

4.以下のコードを追加して、コンストラクタと元からあるデータソースへの参照を保持するメンバーを定義します。

public class CachedProductsRepository : CachedDataSource, IProductRepository

{

    private readonly IProductRepository repository;

 

    public CachedProductsRepository(IProductRepository repository, ObjectCache cacheProvider) :

        base(cacheProvider, "Products")

    {

        this.repository = repository;

    }

}

Note: CachedProductsRepositoryコンストラクタは引数で受け取ったキャッシュプロバイダーを使用して基底クラスを初期化し、引数で受け取った元からあるデータソースをメンバーにセットします。このクラスではキャッシュリージョン「Products」を定義します。

5.最後に、以下の通りGetProductsメソッドを実装してIProductRepositoryの振る舞いを定義します。

public List<string> GetProducts()

{

    return RetrieveCachedData(

            "allproducts",

            () => this.repository.GetProducts(),

            new CacheItemPolicy { AbsoluteExpiration = DateTime.UtcNow.AddMinutes(1) });

}

Notes: GetProductsメソッドは基底クラスでRetrieveCachedDataメソッドを呼び出しています。その時の引数には、キャッシュされるアイテムを一意に識別するキー(この場合は”allproducts”)、オリジナルのデータソースのGetProdctsメソッドを呼び出しているラムダ式のデリゲート、有効期間を1分間とするCachedItemPolicyを渡しています。

IProductRepositoryの振る舞いが非常に簡単なため、キャッシュ機能の実装に必要なコードは上記の通りです。一般的にソースコードは1つ以上のメソッドが定義されていますが、今回同じパターンをコピーすることでそれぞれのメソッドを実装することができます。基本的なアプローチは変わりません。

次は「Task3 – Creating a Data Source Factory Class」です。

コメントを残す

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

WordPress.com ロゴ

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

Twitter 画像

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

Facebook の写真

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

Google+ フォト

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

%s と連携中

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