- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在开发一个 azure 的应用程序,它需要在某个时候上传(下载)大量的小 blob 到单个容器(超过 1k blob,每个小于 1 Mb)。为了加快这个过程,我想使用多个线程来上传(下载)blob。
这是我用于上传单个 blob 的例程:
CloudStorageAccount storageAccount = CloudStorageAccount.Parse(ConnectionString);
CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient();
CloudBlobContainer blobContainer =
blobClient.GetContainerReference(ContainerName);
blobContainer.CreateIfNotExist();
CloudBlob blob = blobContainer.GetBlobReference(Id);
blob.UploadByteArray(Data);
对于上面代码中使用的每种类型,MSDN 的说明如下:
Any public static (Shared in Visual Basic) members of this type are thread safe. Any instance members are not guaranteed to be thread safe.
这是否意味着我需要在每个线程中执行以下代码?或者也许我只能执行一次并在不同线程之间共享 CloudBlobContainer 的单个实例?
CloudStorageAccount storageAccount = CloudStorageAccount.Parse(ConnectionString);
CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient();
CloudBlobContainer blobContainer =
blobClient.GetContainerReference(ContainerName);
我真的很高兴在不同的线程中使用 CloudBlobContainer 的单个实例,否则它会严重减慢整个上传(下载)过程。
最佳答案
只要您不尝试对容器本身执行更新,您应该可以共享单个 blob 容器引用(即使如此,我认为在大多数情况下(例如 List)它仍然没问题)。事实上,如果您确定容器引用存在,您甚至不需要它:
client.GetContainerReference("foo").GetBlobReference("bar");
client.GetBlobReference("foo/bar"); //same
如您所见,获取容器引用的唯一原因是您想对容器本身执行操作(列表、删除等)。如果将 blob 引用保留在单独的线程中,那就没问题了。
关于Azure 存储 Blob 类型(CloudBlobContainer、CloudBlobClient 等)和线程安全,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6915424/
我最近一直在学习 Azure,发现有 2 个用于处理 blob 的类:CloudBlobClient 和 BlobClient。 CloudBlobClient 来自 Microsoft.Azure.
来自documentation函数 CloudBlobClient.StartCopyAsync() 它说 Initiates an asynchronous operation to start c
我有这两个对象用于 Azure Blob 存储访问,并希望在 ASP.NET MVC 应用程序中使用它们。 CloudBlobClient blobClient = storageAccount.Cr
我已经为此工作了几天,并阅读了之前有关多线程和 blob 客户端的问题并实现了他们的建议。 我已将问题归结为以下内容。 不会生成任何错误,只是没有将任何内容写入threadtest容器(已存在)。有时
我想将 CloudBlobContainer 实例“容器”依赖注入(inject)到我的自定义类中。 问题是生命周期。我可以为 Per Web Request 或 As a singleton 做,因
每次我想从存储中获取 blob 时,是否应该创建 CloudStorageAccount 和 CloudBlobClient 实例?例如,我实现了自定义虚拟路径提供程序来使用 blob 存储。最佳设计
我正在尝试为我的 AzureBlobRepository 编写单元测试。存储库在构造函数中接收一个 CloubBlobClient。我想模拟客户端,但这给出了一个异常(exception): usin
我正在构建的应用程序会在 azure 上下载和上传一些 block blob。我目前使用的是 v6.1,一切正常。但由于以下问题,我无法升级到 v7: 我可能完全错了,但我决定不在我的应用程序中使用
我正在开发一个 azure 的应用程序,它需要在某个时候上传(下载)大量的小 blob 到单个容器(超过 1k blob,每个小于 1 Mb)。为了加快这个过程,我想使用多个线程来上传(下载)blob
SSIS包 找不到方法:'Microsoft.WindowsAzure.Storage.Blob.CloudBlobClient Microsoft.DataTransfer.Runtime.Azur
我是一名优秀的程序员,十分优秀!