テスターですが何か?

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

【日本語訳】Exploring Windows Azure Storage part5

leave a comment »

このエントリーはMSDNのチュートリアル「Exploring Windows Azure Storage」の「Task3 – Creating the Chat User Interface」の日本語訳になります。このコンテンツ、日本語訳全体については、こちらのエントリーを参照してください。

 

Task3 – Creating the Chat User Interface

このエントリーでは、Windows Azure Table Storageにメッセージを保存しWebページに表示するために必要なコードを追加します。

 

1.Global.asax.cs / Global.asax.vb のApplication_Startメソッドへ移動し、以下のコードをメソッド内に追加します。このコードは前回作成した MessageataSericeContextからストレージテーブルを作成します。

(コードスニペット – ExploringWindowsAzureStorage-Ex01-08-ApplicationStartMethod-CS)

        protected void Application_Start(object sender, EventArgs e)
        {

            // MessageDataServiceContextからデータテーブルを作成します
            // データテーブルは1回だけ作成することを推奨します、一般的には前準備処理をして行われ
            // アプリケーションコードに記載されることはありません
            var account = CloudStorageAccount.FromConfigurationSetting("DataConnectionString");
            
            // 動的にテーブルを作成します
            CloudTableClient.CreateTablesFromModel(typeof(MessageDataServiceContext),
                                                    account.TableEndpoint.AbsoluteUri,
                                                    account.Credentials);
        }

(コードスニペット – ExploringWindowsAzureStorage-Ex01-08-ApplicationStartMethod-VB)

    Sub Application_Start()

        CloudStorageAccount.SetConfigurationSettingPublisher( _
            Sub(configName, configsetter) _
            configsetter(RoleEnvironment.GetConfigurationSettingValue(configName)))

        ' MessageDataServiceContextからデータテーブルを作成します
        ' データテーブルは1回だけ作成することを推奨します、一般的には前準備処理をして行われ
        ' アプリケーションコードに記載されることはありません
        Dim account = CloudStorageAccount.FromConfigurationSetting("DataConnectionString")

        ' 動的にテーブルを作成します
        CloudTableClient.CreateTablesFromModel(GetType(MessageDataServiceContext),
                                                account.TableEndpoint.AbsoluteUri,
                                                account.Credentials)

    End Sub

 

Note: 上記コードは、前回作成した MessageDataServiceContext クラスで定義されたモデルからテーブルを作成しています。データテーブルは1回だけ作成さすべきということに注意してください。一般的には準備段階で作成され、テーブル作成処理がアプリケーションコードに出現することはまずありません。この初期化処理は Global クラスの Application_Startメソッドに記載することを推奨します。

メッセージを取得して画面に表示するために、このメソッドで MessageDataServiceContextのインスタンを作成し、サービス設定ファイル(ServiceConfiguration.cscfg)のアカウント情報をもとに初期化を行なっています。Messagesプロパティ(Messageテーブルからデータサービスクエリを返す)は、画面表示用の ListView コントロールにバインドされます。

CloudStorageAccount型のオブジェクトはストレージアカウントのことです、Storage Serviceへ接続するための設定情報を保持しています。アカウント名、アカウントのURI、共有鍵と関連付けされており、CloudTableClient ヘルパークラスがその初期設定を利用します。これらの設定情報は ServiceConfiguration.cscfgに記載されています。

2.Global.asax.cs / Global.asax.vb ファイル先頭に以下の名前空間宣言が記載されていることを確認してください。この名前空間はユーティリティクラス用、ServiceRuntimeクラス用です。

(コードスニペット – ExploringWindowsAzureStorage-Ex01-09-GlobalNamespace-CS)

using Microsoft.WindowsAzure;
using Microsoft.WindowsAzure.ServiceRuntime;
using Microsoft.WindowsAzure.StorageClient;

(コードスニペット – ExploringWindowsAzureStorage-Ex01-09-GlobalNamespace-VB)

Imports Microsoft.WindowsAzure
Imports Microsoft.WindowsAzure.ServiceRuntime
Imports Microsoft.WindowsAzure.StorageClient

 

3.ソリューションエクスプローラーからRDChat_WebRoleを展開し、Default.aspxを右クリックし、[コードの表示]を選択してチャットアプリケーションのWebページUIのコードビハインドファイルを開きます。

Default.aspx.cs / Default.aspx.vb コードビハインドファイルに以下の名前空間宣言が記載されていることを確認してください。

(コードスニペット – ExploringWindowsAzureStorage-Ex01-10-Namespace-CS)

using System.Data.Services.Client;
using Microsoft.WindowsAzure;

(コードスニペット – ExploringWindowsAzureStorage-Ex01-10-Namespace-VB)

Imports System.Data.Services.Client
Imports Microsoft.WindowsAzure

 

4.Default.aspx.cs / Default.aspx.vb の SubmitButton_Click イベントへ移動し、ユーザーが入力したメッセージをTableStorageへ保存し、TableStorageのデータをWebページへバインドするコードを追加します。このメソッドは、Messageエンティティをテーブルに登録するために前回作成した AddMessage メソッドを使用します。

(コードスニペット – ExploringWindowsAzureStorage-Ex01-11-SubmitButtonClick-CS)

        protected void SubmitButton_Click(object sender, EventArgs e)
        {
            var statusMessage = string.Empty;

            try
            {
                var account = CloudStorageAccount.FromConfigurationSetting("DataConnectionString");
                var context = new MessageDataServiceContext(account.TableEndpoint.ToString(), account.Credentials);
                context.AddMessage(this.nameBox.Text, this.messageBox.Text);
                this.messageList.DataSource = context.Messages;
                this.messageList.DataBind();
            }
            catch (DataServiceRequestException ex)
            {
                statusMessage = "Table Storage Serverへ接続することができませんでした。サービスが稼働していることを確認してください。<br>"
                                + ex.Message;
            }
            status.Text = statusMessage;
        }

(コードスニペット – ExploringWindowsAzureStorage-Ex01-11-SubmitButtonClick-VB)

    Protected Sub SubmitButton_Click(ByVal sender As Object, ByVal e As EventArgs)

        Dim statusMessage As String = String.Empty

        Try
            Dim account As CloudStorageAccount =
                CloudStorageAccount.FromConfigurationSetting("DataConnectionString")
            Dim context As New MessageDataServiceContext(account.TableEndpoint.ToString, account.Credentials)
            context.AddMessage(Me.nameBox.Text, Me.messageBox.Text)
            Me.messageList.DataSource = context.Messages
            Me.messageList.DataBind()
        Catch ex As DataServiceRequestException
            statusMessage = "Table Storage Serverへ接続することができませんでした。サービスが稼働していることを確認してください。<br>" & ex.Message
        End Try

        Me.status.Text = statusMessage

    End Sub

 

5.ファイルを保存し、[ビルド]メニューより[ソリューションのビルド]を実行してください。

 

次は、「Verification」です。

Written by david9142

2011年12月8日 @ 11:56 PM

コメントを残す

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

WordPress.com ロゴ

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

Twitter 画像

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

Facebook の写真

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

Google+ フォト

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

%s と連携中

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