テスターですが何か?

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

【日本語訳】Exploring Windows Azure Storage part10

leave a comment »

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

 

Task3 – Retrieving Metadata for Blobs in Storage

Blobデータにはメタデータを付加して保存することができます。メタデータは新規コンテナやブロブを作成するリクエストからも、明示的に既存のリソースへプロパティを追加するリクエストからも作成することができます。このエントリーでは、Windows Azureに保存されている画像に関連付けられたメタデータを取得して表示する機能を、画像ギャラリーページに追加します。

 

1.画像を表示するListViewの各 blob のメタデータを取得するイベントハンドラーを追加します。Default.aspx を右クリックし、[デザイナーの表示]を選択します。 imageListView コントロールを選択し、プロパティウィンドウで(コントロールを右クリックして、プロパティを選択する必要があるかもしれませんが)イベントボタンをクリックします。DataカテゴリのItemDataBoundイベントへ移動し、 OnBlobDataBound と入力して[Enter]キーを押下します。ASP.NETのマークアップを直接編集してイベントハンドラーを追加しても構いません。

image

図18.メタデータを表示するイベントハンドラーを設定

2.コードビハインドファイルの OnBlobDataBound メソッドへ移動し以下のコードを追加します。このコードではListViewにバインドする各ブロブのプロパティを取得し、取得した各メタデータの name/value を含むコレクションを作成します。そしてこのコレクションは各画像のメタデータを表示する asp:Repeater コントロールのデータソースとして使用します。

(コードスニペット – ExploringWindowsAzureStorage-Ex02-08-OnBlobDataBoundMethod-CS)

        protected void OnBlobDataBound(object sender, ListViewItemEventArgs e)
        {
            if (e.Item.ItemType == ListViewItemType.DataItem)
            {
                var metadataRepeter = e.Item.FindControl("blobMetadata") as Repeater;
                var blob = ((ListViewDataItem)(e.Item)).DataItem as CloudBlob;

                // このblobがsnapshotの場合、ボタンの名前を"Delete Snapshot"に変更する
                if (blob != null)
                {
                    if (blob.SnapshotTime.HasValue)
                    {
                        var delBtn = e.Item.FindControl("deleteBlob") as LinkButton;
                        if (delBtn != null)
                        {
                            delBtn.Text = "Delete Snapshot";
                            var snapshotRequest = BlobRequest.Get(new Uri(delBtn.CommandArgument), 0, blob.SnapshotTime.Value, null);
                            delBtn.CommandArgument = snapshotRequest.RequestUri.AbsoluteUri;
                        }

                        var snapshotBtn = e.Item.FindControl("SnapshotBlob") as LinkButton;
                        if (snapshotBtn != null) snapshotBtn.Visible = false;
                    }

                    if (metadataRepeter != null)
                    {
                        // metadata をバインドする
                        metadataRepeter.DataSource = from key in blob.Metadata.AllKeys
                                                     select new
                                                     {
                                                         name = key,
                                                         value = blob.Metadata[key]
                                                     };
                    }
                    metadataRepeter.DataBind();
                }
            }
        }

(コードスニペット – ExploringWindowsAzureStorage-Ex02-08-OnBlobDataBoundMethod-VB)

    Protected Sub OnBlobDataBound(ByVal sender As Object, ByVal e As ListViewItemEventArgs) Handles images.ItemDataBound

        If e.Item.ItemType = ListViewItemType.DataItem Then

            Dim metadataRepeater = TryCast(e.Item.FindControl("blobMetadata"), Repeater)
            Dim blob = TryCast(DirectCast((e.Item), ListViewDataItem).DataItem, CloudBlob)

            ' このblobがsnapshotの場合、ボタンの名前を"Delete Snapshot"に変更する
            If blob IsNot Nothing Then

                If blob.SnapshotTime.HasValue Then

                    Dim delBtn = TryCast(e.Item.FindControl("deleteBlob"), LinkButton)

                    If delBtn IsNot Nothing Then
                        delBtn.Text = "Delete Snapshot"
                        Dim snapshotRequest = BlobRequest.Get(New Uri(delBtn.CommandArgument), 0, blob.SnapshotTime.Value, Nothing)
                        delBtn.CommandArgument = snapshotRequest.RequestUri.AbsoluteUri
                    End If

                    Dim snapshotBtn = TryCast(e.Item.FindControl("Snapshot"), LinkButton)

                    If snapshotBtn IsNot Nothing Then
                        snapshotBtn.Visible = False
                    End If

                End If

                If metadataRepeater IsNot Nothing Then

                    ' metadata をバインドする
                    metadataRepeater.DataSource = From key In blob.Metadata.AllKeys _
                                                  Select New With {.Name = key, .Velue = blob.Metadata.Get(key)}

                    metadataRepeater.DataBind()

                End If

            End If

        End If

    End Sub

3.F5キーを押下し、ビルド・アプリケーションを実行します。前回の演習でアップロードした画像のメタデータが表示されていることが分かると思います。

image

図19. BlobStorageから取得したメタデータを表示

4.Shift+F5 を押下し、を押下してデバッグを終了、Compute エミュレーター上に配置されたアプリケーションを削除します。

 

次は「Task4 – Deleting Blobs from Storage」です。

Written by david9142

2011年12月18日 @ 10:36 AM

コメントを残す

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

WordPress.com ロゴ

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

Twitter 画像

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

Facebook の写真

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

Google+ フォト

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

%s と連携中

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