5

記事「.NET で Windows Azure Blob ストレージ サービスを使用する方法」では、ファイルをアップロードする方法を示すために次のコードが使用されています。

// Retrieve storage account from connection string.
CloudStorageAccount storageAccount = CloudStorageAccount.Parse(
    CloudConfigurationManager.GetSetting("StorageConnectionString"));

// Create the blob client.
CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient();

// Retrieve reference to a previously created container.
CloudBlobContainer container = blobClient.GetContainerReference("mycontainer");

// Retrieve reference to a blob named "myblob".
CloudBlockBlob blockBlob = container.GetBlockBlobReference("myblob");

// Create or overwrite the "myblob" blob with contents from a local file.
using (var fileStream = System.IO.File.OpenRead(@"path\myfile"))
{
    blockBlob.UploadFromStream(fileStream);
}

ファイルを受け入れて BLOB ストレージに保存するサービスを長時間実行している場合、これらすべての手順を毎回実行しますか? blockBlobそれとも、複数のリクエストで使用された参照を持つクラスを持っているでしょうか? 複数のリクエストからキャッシュして使用しても問題ないのはどれくらいですか? (これはスレッドを意味すると思います)

4

2 に答える 2

5

私は@knightpfhorに同意します。キャッシュするものは何もありません。UploadFromStream を呼び出すまで、実行時間の長いトランザクションは呼び出されていません。すべてがメモリ内にあり、オブジェクトを構築します。

これは、開くのにコストがかかるため、プログラマーが接続をキャッシュする巧妙な方法を見つける Sql 接続とは異なります。これは REST 呼び出しであるため、すべてのデータ変更アクションは https 呼び出しであり、その前のすべての準備は簡単です。 -ウェイト オブジェクトの操作

于 2012-12-02T16:54:33.237 に答える
4

これらのオブジェクトのほとんどはかなり軽量のコンストラクターを備えており、スレッドセーフであることが保証されていないため(MSDNのドキュメントを確認してください)、それらをキャッシュすることについてあまり心配する必要はありません。私が静的オブジェクトとして保持する傾向があるのは、クラウドストレージアカウントだけです。

于 2012-12-02T08:46:30.260 に答える