テスターですが何か?

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

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

leave a comment »

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

Task1 – Implementing a Caching Data Source Base Class

このエントリーではキャッシュ用データソースクラスの基本となる抽象クラスを作成します。キャッシュ層を必要とするどんなプロジェクトでもこの汎化クラスの恩恵を受けることができます。

1.Visual Studio 2010を管理者として起動します。

2.「Source\Ex3-ReusableCachingImplementation\Begin」ディレクトリにある、Beginソリューションを開きます。

Note: 【重要】ソリューションを実行する前に、スタートアッププロジェクトが設定されていることを確認してください。MVCプロジェクトでスタートページは空白に設定されていなければなりません。

スタートアッププロジェクトの設定は、ソリューションエクスプローラーで AzureStoreService プロジェクトを右クリックし、[スタートアッププロジェクトに設定]を選択します。

スタートページの設定は、ソリューションエクスプローラーでMVCAzureStoreプロジェクトを右クリックし、[プロパティ]を選択します。プロパティウィンドウにて[Web]タグを選択し、[スタートアクション]で[特定のページ]を選択し、値を空白に設定します。

3.Web.configファイルでNorthwindEntities接続文字列があなたのデータベースを指定するように更新します。[YOUR-SQL-AZURE-SERVER-ADDRESS]、[SQL-AZURE-USERNAME]、[SQL-AZURE-PASSWORD]をそれぞれセットアップの手順でポータルからデータベースを作成した際に登録したSQL Azureのサーバー名、管理者ユーザー名、管理者パスワードに置き換えてください。

Note: Northwind2データベースのコピーをSQL Azureアカウントに作成し、ファイやウォール設定を行った手順を確認してください。

4.MVCAzureStoreプロジェクトにSystem.Runtime.Cachingアセンブリへの参照を追加します。

5.MVCAzureStoreプロジェクトのServiceフォルダに、「Caching」という名前のフォルダを作成します。

6.前手順で作成したCachingフォルダ内にCachedDataSource.csクラスを新規作成します。

7.新規作成したファイルに、System.Runtime.Caching名前空間のインポート設定を追加します。

using System;

using System.Collections.Generic;

using System.Linq;

using System.Web;

using System.Runtime.Caching;

8.抽象クラスを表す修飾子を、CachedDataSourceクラスに付加します。

public abstract class CachedDataSource

{

}

9.以下のフィールドをクラスに追加します。

public abstract class CachedDataSource

{

    private readonly ObjectCache cacheProvider;

    private readonly string regionName;

}

10.そしてObjectCacheとリージョン名を引数とする以下のコンストラクタを定義します。

public CachedDataSource(ObjectCache cacheProvider, string regionName)

{

    if (cacheProvider == null)

    {

        throw new ArgumentNullException("cacheProvider");

    }

    if (cacheProvider is MemoryCache)

    {

        regionName = null;

    }

 

    this.cacheProvider = cacheProvider;

    this.regionName = regionName;

}

Note: CachedDataSourceのコンストラクタはObjectCacheインスタンスを引数として受け取ります、このObjectCacheはキャッシュにアクセスするためのメソッドやプロパティを提供します。また、リージョン名とはキャッシュオブジェクトを使用してキャッシュオブジェクトをまとめるために使用する識別情報です。

11.次にキャッシュからデータを取得する以下のコードを追加します。

protected T RetrieveCachedData<T>(string cacheKey, Func<T> fallbackFunction, CacheItemPolicy cachePolicy) where T : class

{

    var data = this.cacheProvider.Get(cacheKey, this.regionName) as T;

    if (data != null)

    {

        return data;

    }

 

    data = fallbackFunction();

    if (data != null)

    {

        this.cacheProvider.Add(new CacheItem(cacheKey, data, this.regionName), cachePolicy);

    }

    return data;

}

Note: RetrieveCachedDataメソッドは引数で受け取ったキー情報(cacheKey)を使用してキャッシュからコピーを取得しています。キャッシュが利用可能であればそのまま返しますが、そうでなければ引数で受け取ったfallbackデリゲートを使用してデータソースからデータを取得し、引数で受け取ったキャッシュ有効期間ポリシーをもとにデータをキャッシュします。

12.最後にキャッシュからアイテムを削除するメソッドを追加します。

protected void RemoveCachedData(string cacheKey)

{

    this.cacheProvider.Remove(cacheKey, this.regionName);

}

13.CachedDataSource.csファイルを保存します。

次は「Task2 – Building a Caching Product Catalog Repository」です。

コメントを残す

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

WordPress.com ロゴ

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

Twitter 画像

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

Facebook の写真

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

Google+ フォト

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

%s と連携中

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