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 回答