在文章How to use the Windows Azure Blob Storage Service in .NET中,以下代码用于演示如何上传文件
// 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
引用?多少(如果有的话)可以缓存和使用多个请求? (我猜这意味着线程)
答案 0 :(得分:5)
我同意@knightpfhor,没有什么可以缓存的。在调用UploadFromStream之前,不会调用长时间运行的事务。一切都在记忆中,构建物体。
这不像是一个Sql Connection,程序员可以找到缓存连接的聪明方法,因为它们打开成本很高 - 这是REST调用,因此每个数据更改操作都是https调用,并且之前的所有准备工作,只是轻量级物体操纵
答案 1 :(得分:3)
这些对象中的大多数具有相当轻量级的构造函数,并且不保证是线程安全的(请查看MSDN文档),因此我不会太担心缓存它们。我倾向于将其作为静态对象保留的唯一一个是云存储帐户。