テスターですが何か?

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

【日本語訳】Exploring Windows Azure Storage part4

leave a comment »

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

 

Task 2 – Creating Classes to Model the Table Schema

ローカルエミュレーター上のTable Storageを操作するには、WCF Data Service Client Libraryを使用します。

 

.NETでWindows Azure Table Storageを利用するには、スキーマを定義したモデルクラスを作成する必要があります。モデルには必要なプロパティだけではなく、Timestamp, PartitionKey, RowKey プロパティを含み、DataServiceKey(“PartitionKey”, “RowKey”) 属性が付けられていなければなりません。簡単に言うと、Microsoft.WindowsAzure.StorageClient 名前空間には、この必須プロパティが定義され、簡単に継承することができる TableServiceEntity というクラスが存在し、利用することができます。

 

このエントリーでは、Chatアプリ用のデータを保存するモデルクラスを作成します。

 

1.Webロールプロジェクトに WCF Data Services Client Library への参照を追加します。ソリューションエクスプローラーで RdChat_WebRole プロジェクトを右クリックし、[参照の追加]を選択します。[.NET]タブから、 System.Data.Services.Client を選択し、[OK]をクリックします。

2.メッセージテーブルのためのモデルクラスをWebロールプロジェクトに追加します。ソリューションエクスプローラーから、RdChat_WebRole プロジェクトを右クリックし、[追加]-[クラス]を選択します。[新しい項目の追加]ダイアログから、名前を「Message.cs」(C#) / 「Message.vb」(VB) と入力し、[追加]をクリックします。

3.Messageクラスの宣言を変更し、Microsoft.WindowsAzure.StorageClient.TableServiceEntityクラスから派生させます。

(コードスニペット – ExploringWindowsAzureStorage-Ex01-01-MessageClass-CS)

    public class Message : Microsoft.WindowsAzure.StorageClient.TableServiceEntity
    {
    }

 

(コードスニペット – ExploringWindowsAzureStorage-Ex01-01-MessageClass-VB)

Public Class Message
    Inherits Microsoft.WindowsAzure.StorageClient.TableServiceEntity

End Class

Note: TableServiceEntityクラスは、Microsoft.WindowsAzure.StorageClientライブラリの一部として含まれています。Windows Azure Table Storageに保存されるエンティに必要なプロパティ、PartitionKey, RowKey, Timestampが定義されています。

 

4.Messageクラスに、PartitionKey と RowKey プロパティを初期化するコンストラクタを追加します。

(コードスニペット – ExploringWindowsAzureStorage-Ex01-02-MessageClass-CS)

        public Message()
        {
            PartitionKey = "a";
            RowKey = string.Format("{0:10}_{1}", DateTime.MaxValue.Ticks - DateTime.Now.Ticks, Guid.NewGuid());
        }

 

(コードスニペット – ExploringWindowsAzureStorage-Ex01-02-MessageClass-VB)

    Public Sub New()

        PartitionKey = "a"
        RowKey = String.Format("{0:10}_{1}", (DateTime.MaxValue.Ticks - DateTime.Now.Ticks), Guid.NewGuid)

    End Sub

Note: この演習では PartitionKey プロパティに固定値を設定していますが、実際の開発ではストレージノード間に分散されるに値を設定してください。

 

5.Messageクラスに、チャットメッセージ情報を保持する Name と Body の2つの文字列のプロパティを追加します。

(コードスニペット – ExploringWindowsAzureStorage-Ex01-03-MessageClass-CS)

        public string Name { get; set; }

        public string Body { get; set; }

 

(コードスニペット – ExploringWindowsAzureStorage-Ex01-03-MessageClass-VB)

    Public Property Body As String

    Public Property Name As String

 

6.Message.cs / Message.vb ファイルを保存します。

7.次に、Messageテーブルへのアクセスに必要な WCF Data Services の DataServiceContext を定義したクラスをWebロールプロジェクトに追加します。ソリューションエクスプローラーから、RdChat_WebRole プロジェクトを右クリックし、[追加]-[クラス]を選択します。[新しい項目の追加]ダイアログから、名前に「MessageDataServiceContext.cs」(C#) / 「MessageDataServiceContext.vb」(VB) を設定し、[追加]をクリックします。

8.新しいクラスファイルに、以下の名前空間宣言を追加します。

(コードスニペット – ExploringWindowsAzureStorage-Ex01-04-MessageClass-CS)

using Microsoft.WindowsAzure
using Microsoft.WindowsAzure.StorageClient

 

(コードスニペット – ExploringWindowsAzureStorage-Ex01-04-MessageClass-VB)

Imports Microsoft.WindowsAzure
Imports Microsoft.WindowsAzure.StorageClient

 

9.クラスの宣言を変更し、TableServiceContext クラスから派生させます。また、ストレージアカウント情報を渡して基底クラスを初期化するデフォルトコンストラクタを追加します。

(コードスニペット – ExploringWindowsAzureStorage-Ex01-05-MessageClass-CS)

    public class MessageDataServiceContext : TableServiceContext
    {
        public MessageDataServiceContext(string baseAddress, StorageCredentials credentials)
            : base(baseAddress, credentials)
        {
        }
    }

 

(コードスニペット – ExploringWindowsAzureStorage-Ex01-05-MessageClass-VB)

Public Class MessageDataServiceContext
    Inherits TableServiceContext

    Public Sub New(baseAddress As String, credentials As StorageCredentials)
        MyBase.New(baseAddress, credentials)
    End Sub

End Class

 

10.MessageDataServiceContextクラスに、メッセージテーブルに対するデータサービスクエリを返すプロパティを追加します。

(コードスニペット – ExploringWindowsAzureStorage-Ex01-06-MessageClass-CS)

        public IQueryable<Message> Messages
        {
            get
            {
                return this.CreateQuery<Message>("Messages");
            }
        }

 

(コードスニペット – ExploringWindowsAzureStorage-Ex01-06-MessageClass-VB)

    Public ReadOnly Property Messages() As IQueryable(Of Message)
        Get
            Return MyBase.CreateQuery(Of Message)("Messages")
        End Get
    End Property

 

11.最後に、MessageDataServiceContextクラスにテーブルに新しいメッセージを挿入するメソッドを追加します。後でチャット機能を実装するときにこのメソッドを使用します。

(コードスニペット – ExploringWindowsAzureStorage-Ex01-07-MessageClass-CS)

        public void AddMessage(string name, string body)
        {
            this.AddObject("Messages", new Message { Name = name, Body = body });
            this.SaveChanges();
        }

 

(コードスニペット – ExploringWindowsAzureStorage-Ex01-07-MessageClass-VB)

    Public Sub AddMessage(name As String, body As String)

        Dim message As New Message
        message.Name = name
        message.Body = body

        MyBase.AddObject("Messages", message)
        MyBase.SaveChanges()

    End Sub

 

12.[ビルド]メニューより、[ソリューションのビルド]を実行します。

 

次は「Task3 – Creating the Chat User Interface」です。

Written by david9142

2011年12月7日 @ 12:31 AM

コメントを残す

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

WordPress.com ロゴ

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

Twitter 画像

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

Facebook の写真

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

Google+ フォト

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

%s と連携中

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