【日本語訳】Exploring Windows Azure Storage part5
このエントリーは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」です。
コメントを残す