テスターですが何か?

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

【日本語訳】Exploring Windows Azure Storage part13

leave a comment »

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

 

Task6 – Taking Blob Snapshots

Windows Azure Blob Serviceは Blob のスナップショットを取得する機能をサポートしています。スナップショットとコピーの違いは、スナップショットとは読み取り専用でオリジナルのブロブはスナップショットとの関連を保持しています、一方Blob のコピーは編集可能です。一旦 Blob のスナップショットを取得すると、オリジナルの Blob は削除することができなくなります。オリジナルの Blob を削除する前に、すべてのスナップショットを削除する必要があります。

このエントリーでは、Windows Azure Storage上の画像データを含んだ Blob のスナップショットを取得する機能を追加します。

 

1.gallery コンテナの画像のスナップショットを取得する asp:LintButton コントロールを ListView に追加します。Default.aspx をマークアップ表示で開き、asp:ListView コントロールの ItemTemplate 部分へ移動します。blobRepeater コントロールのすぐ下にあるASP.NETのマークアップ(“snapshotBlob” の LinkButton)部分のコメントアウトを解除します。

            <ItemTemplate>            
                <div class="item">
                    <ul style="width:40em;float:left;clear:left" >
                        <asp:Repeater ID="blobMetadata" runat="server">
                        <ItemTemplate>
                            <li><%# Eval("Name") %><span><%# Eval("Value") %></span></li>
                        </ItemTemplate>
                        </asp:Repeater>
                        <li>
                            <asp:LinkButton ID="deleteBlob" 
                                    OnClientClick="return confirm('Delete image?');"
                                    CommandName="Delete" 
                                    CommandArgument='<%# Eval("Uri")%>'
                                    runat="server" Text="Delete" oncommand="OnDeleteImage" />                       

                            <asp:LinkButton ID="CopyBlob" 
                                    OnClientClick="return confirm('Copy image?');"
                                    CommandName="Copy" 
                                    CommandArgument='<%# Eval("Uri")%>'
                                    runat="server" Text="Copy" oncommand="OnCopyImage" />

                            <asp:LinkButton ID="SnapshotBlob" 
                                    OnClientClick="return confirm('Snapshot image?');"
                                    CommandName="Snapshot" 
                                    CommandArgument='<%# Eval("Uri")%>'
                                    runat="server" Text="Snapshot" oncommand="OnSnapshotImage" />
                        </li>
                    </ul>
                    <img src="&lt;%# Eval(" Uri") %>" alt="<%# Eval("Uri") %>" style="float:left"/>
                </div>
            </ItemTemplate>

2.Default.aspx.cs / Default.aspx.vb に asp:LinkButtonコントロール(snapshotBlob)のイベント処理を実装します。このコードはオリジナルの Blob をもとにスナップショットを取得しています。

(コードスニペット – ExploringWindowsAzureStorage-Ex02-11-OnSnapshotImageMethod-CS)

        protected void OnSnapshotImage(object sender, CommandEventArgs e)
        {
            if (e.CommandName == "Snapshot")
            {
                // オリジナルの Blob を取得
                var blobUri = (string)e.CommandArgument;
                var srcBlob = this.GetContainer().GetBlockBlobReference(blobUri);

                // スナップショットの作成
                var snapshot = srcBlob.CreateSnapshot();
                status.Text = "A snapshot has been taken for image blob:" + srcBlob.Uri + " at " + snapshot.SnapshotTime;
                RefreshGallery();
            }
        }

(コードスニペット – ExploringWindowsAzureStorage-Ex02-11-OnSnapshotImageMethod-VB)

    Protected Sub OnSnapshotImage(ByVal sender As Object, ByVal e As CommandEventArgs)

        If e.CommandName = "Snapshot" Then
            ' オリジナルのBlobを取得
            Dim blobUri = DirectCast(e.CommandArgument, String)
            Dim srcBlob = Me.GetContainer.GetBlobReference(blobUri)
            ' スナップショットを作成
            Dim snapshot = srcBlob.CreateSnapshot()
            status.Text = "A snapshot has been taken for image blob:" & srcBlob.Uri.ToString & " at " & snapshot.SnapshotTime
            RefreshGallery()

        End If

    End Sub

3.F5キーを押下して、アプリケーションをビルド・実行します。

4.表示されている任意の画像の Snapshot リンクをクリックし、blobのスナップショットを作成します。

image

図23.blobスナップショットの取得

5.スナップショット取得確認ダイアログで OK をクリックすると、スナップショット取得完了のステータスメッセージが表示されます。

image

6.スナップショットを取得したオリジナル Blob の削除を試みます。

image

図24.スナップショット削除エラー

7.Blob を削除することができないというメッセージが「status」に表示されます。

image

図25.スナップショット削除エラー

Note: スナップショットが取得されている Blob を削除するには、すべてのスナップショットを先に削除する必要があります。(スナップショットを先に削除する機能はこのソリューションには含まれていません)

 

次は「Exercise3: Working with Queues」です。

Written by david9142

2011年12月18日 @ 10:38 PM

コメントを残す

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

WordPress.com ロゴ

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

Twitter 画像

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

Facebook の写真

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

Google+ フォト

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

%s と連携中

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