SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

Windows Azure新機能チュートリアル

Windows Azure AppFabric Cachingでスケールアウトを実現しよう

Windows Azure新機能チュートリアル(5)

  • X ポスト
  • このエントリーをはてなブックマークに追加

ASP.NETセッションプロバイダーとしての利用

 サービス名前空間の作成が完了したので、ここからはAppFabric CachingをASP.NETのセッションプロバイダーとして構成する方法について説明します。

Windows Azure AppFabric SDKのインストール

 AppFabric Cachingの利用には、Windows Azure SDKとは別に、Windows Azure AppFabric SDKが必要です。以下のURLからダウンロードしてインストールします。32bit向けと64bit向けが、それぞれ別インストーラで提供されています。お使いの環境に合わせてインストールしてください。

 なお、AppFabric CachingとWindows Server AppFabricの開発環境を同じPCに構築することはできません。Windows Server AppFabricのアセンブリはGACにインストールされ、誤った参照が行われるためです。詳細は、「Developing Cache Clients (Windows Azure AppFabric Caching)」を参照してください。

プロジェクト準備

 はじめに、Windows Azureプロジェクトを作成し、AppFabric Cachingアセンブリの参照を追加します。

 Visual Studioを起動し、[ファイル]-[新規作成]-[プロジェクト]を選択します。Windows Azureプロジェクトを選択し[OK]ボタンをクリックします。新しいWindows Azureプロジェクト作成画面が表示されるため、ASP.NET Webロールで[OK]ボタンをクリックし、新しいソリューションを作成します。

 AppFabric SDKで提供されるAppFabric Caching用アセンブリは、.NET Framework 4向けにのみ提供されています。プロジェクトを作成するときは必ず、.NET Framework 4を選択してください。

 AppFabric Cachingを利用するために、参照の追加を行います。WebRole1の参照設定を選択し、コンテキストメニューから[参照の追加]を選択します。[参照]タブを選択し、C:\Program Files\Windows Azure AppFabric SDK\V1.0\Assemblies\NET4.0\Cacheを開きます。以下の3つのアセンブリの参照を追加します(図8)。

  • Microsoft.ApplicationServer.Caching.Client.dll
  • Microsoft.ApplicationServer.Caching.Core.dll
  • Microsoft.Web.DistributedCache.dll
図8 参照の追加
図8 参照の追加

 これで準備は完了です。

Webフォームの修正

 セッションオブジェクトを利用するためにWebフォームを修正します(リスト1)。Webフォームには、セッションオブジェクトを入力するTextBoxコントロールと、結果を表示するGridViewコントロールを配置します。

リスト1 Webフォーム(Default.aspx)
<asp:Content ID="BodyContent" runat="server" ContentPlaceHolderID="MainContent">
    <h2>
        Windows Azure AppFabric Cachingサンプル
    </h2>
    <p>
        Role Instance Id =
        <asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
    </p>
    <p>
        Key :
        <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
        Value :
        <asp:TextBox ID="TextBox2" runat="server"></asp:TextBox>
        <asp:Button ID="Button1" runat="server" Text="Add" OnClick="Button1_Click" />
    </p>
    <p>
        <asp:GridView ID="GridView1" runat="server">
            <RowStyle BackColor="LightBlue" />
            <AlternatingRowStyle BackColor="White" />
        </asp:GridView>
    </p>
</asp:Content>

コードビハインドクラスの修正

 入力されたテキストと結果を表示するためにコードビハインドクラスを修正します(リスト2)。新規セッション開始時に、初回アクセス時間をセッションデータに埋め込みます。また、[Add]ボタンのイベントハンドラを定義し、入力されたKeyとValueをセッションデータに格納し、GridVeiwにバインドします。

リスト2 コードビハインドクラス(Default.aspx.cs)
protected void Page_Load(object sender, EventArgs e)
{
    // 新規セッション時に、初回アクセス時間をセッションデータに追加
    if(this.Session.IsNewSession)
    {
       this.Session.Add("初回アクセス", DateTime.Now.ToString());
    }

    // どのWebロールインスタンスで処理されたか表示
    this.Label1.Text = RoleEnvironment.CurrentRoleInstance.Id;

    // 非PostBack時は、セッションデータをGridView表示
    if (!this.IsPostBack)
    {
        BindGridView();
    }
}

protected void Button1_Click(object sender, EventArgs e)
{
    // Textボックスの値取り出し
    var key = this.TextBox1.Text;
    var val = this.TextBox2.Text;

    // 入力値チェック
    if (string.IsNullOrWhiteSpace(key))
    {
        return;
    }

    // KeyとValueを、セッションデータに追加
    this.Session.Add(key, val);

    // 結果をGridViewに表示
    BindGridView();
}

private void BindGridView()
{
    // SessionデータをDictionary<string, string>型に変換
    Dictionary<string, string> source = this.Session.Keys.Cast<string>().
                      ToDictionary(key => key, key => (string)this.Session[key]);

    // GridViewにデータバインド
    this.GridView1.DataSource = source;
    this.GridView1.DataBind();
}

次のページ
まとめ

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
Windows Azure新機能チュートリアル連載記事一覧

もっと読む

この記事の著者

山田 祥寛(ヤマダ ヨシヒロ)

静岡県榛原町生まれ。一橋大学経済学部卒業後、NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Microsoft MVP for Visual Studio and Development Technologies。執筆コミュニティ「WINGSプロジェクト」代表。主な著書に「独習シリーズ(Java・C#・Python・PHP・Ruby・JSP&サーブレットなど)」「速習シリーズ(ASP.NET Core・Vue.js・React・TypeScript・ECMAScript、Laravelなど)」「改訂3版JavaScript本格入門」「これからはじめるReact実践入門」「はじめてのAndroidアプリ開発 Kotlin編 」他、著書多数

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

WINGSプロジェクト statemachine(statemachine)

WINGSプロジェクトについて>有限会社 WINGSプロジェクトが運営する、テクニカル執筆コミュニティ(代表 山田祥寛)。主にWeb開発分野の書籍/記事執筆、翻訳、講演等を幅広く手がける。2018年11月時点での登録メンバは55名で、現在も執筆メンバを募集中。興味のある方は、どしどし応募頂きたい。著書記事多数。 RSS X: @WingsPro_info(公式)、@WingsPro_info/wings(メンバーリスト) Facebook

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/6007 2011/07/05 14:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング