Azure Storage Client 1.xから2.0への移行サンプル

Azure Storage Client 2.0では、基本的なAPIの使い方が少し変更されています。
1.x系からの移行で戸惑うことは少ないかと思いますが、ファイルアップロードの場合を例に変更箇所をまとめてみました。

まずは名前空間の指定から。
役割ごとに細分化されました。

1.x系
using Microsoft.WindowsAzure.StorageClient;

2.0
using Microsoft.WindowsAzure.Storage;
using Microsoft.WindowsAzure.Storage.Auth;
using Microsoft.WindowsAzure.Storage.Blob;
using Microsoft.WindowsAzure.Storage.RetryPolicies;

次にストレージアカウントの生成。
認証情報を表すクラス名が変わっています。

1.x系
StorageCredentialsAccountAndKey storageCredentials = new StorageCredentialsAccountAndKey(storageAccount, storageKey);
CloudStorageAccount account = new CloudStorageAccount(storageCredentials, true);

2.0
StorageCredentials storageCredentials = new StorageCredentials(storageAccount, storageKey);
CloudStorageAccount account = new CloudStorageAccount(storageCredentials, true);

コンテナの作成。
ExistがExistsになっただけです。

1.x系
CloudBlobContainer container = client.GetContainerReference(containerName);
container.CreateIfNotExist();

2.0
CloudBlobContainer container = client.GetContainerReference(containerName);
container.CreateIfNotExists();

転送ブロックサイズの指定。
通常はデフォルトで問題ありませんが、指定している場合は書き換えてください。

1.x系
container.ServiceClient.WriteBlockSizeInBytes = maxBlockSize;

2.0
container.ServiceClient.SingleBlobUploadThresholdInBytes = maxBlockSize;

次にリクエストオプションの指定ですが、リトライポリシーやタイムアウトの指定が若干変わりました。
その他にも変更箇所がありますが、通常意識するのはこのくらいでしょうか。

1.x系
BlobRequestOptions options = new BlobRequestOptions()
{
RetryPolicy = RetryPolicies.RetryExponential(RetryPolicies.DefaultClientRetryCount, RetryPolicies.DefaultMaxBackoff),
Timeout = TimeSpan.FromSeconds(90)
};

2.0
BlobRequestOptions options = new BlobRequestOptions()
{
RetryPolicy = new ExponentialRetry(),
ServerTimeout = TimeSpan.FromSeconds(90)
};

最後にアップロードです。
リクエストオプションを指定する場合には、AccessConditionの後に指定します。
AccessConditionは1.x系ではBlobRequestOptionsのメンバーでしたが変更になっています。
指定が不要であればnullで構いません。

1.x系
blob.UploadFromStream(fs, options);

2.0
blob.UploadFromStream(fs, null, options);


This entry was posted in 未分類 and tagged , . Bookmark the permalink.

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>