0

我们当前的代码使用 Azure SDK 1.8 并生成共享访问签名,它将首先调用CloudBlobContainer.GetBlobReference(),然后调用CloudBlob.GetSharedAccessSignature(). 其他操作CloudBlobContainer.GetBlobReference()也是如此 - 首先是对 blob 对象的一些操作。

代码从不明确要求制作块 bobs 或页面 blob - 只有“只是 blob”。

现在我们需要迁移到 Azure SDK v2.4。界面发生了很大变化。现在有了

  • CloudBlobContainer.GetBlobReferenceFromServer(),
  • CloudBlobContainer.GetBlockBlobReference()
  • CloudBlobContainer.GetPageBlobReference()

它们看起来完全一样。我们的存储中已经有很多 blob,宁愿让它们保持不变。

那么我们使用这三个中的哪一个?我们将以前创建的 blob 视为块 blob 还是页 blob?

4

1 回答 1

4

Blob 是使用 Azure SDK v1.8 页面 Blob 还是块 Blob 创建的?

如果您将它们创建为页 blob,那么它们将是页 blob,否则将是块 blob。块和页面 blob 的概念从一开始就已经存在并且并不新鲜。

您可以使用任何存储资源管理器来检查您的存储帐户中是否有任何页 blob。PageBlob其他方法是在您的代码中快速搜索。

CloudBlobContainer.GetBlobReferenceFromServer() 和 CloudBlobContainer.Get[Block|Page]BlobReference() 之间的区别

GetBlobReferenceFromServer和之间最大的区别在于Get[Block|Page]BlobReference前者调用存储服务来识别 Blob 类型,而后者只是Cloud[Block|Page]Blob在客户端上创建一个对象实例。如果 blob 不存在,前者会抛出错误,但后者不会,因为没有与服务器进行交互。通常,当您不知道 blob 类型并且不介意为了确保 blob 类型而进行额外的网络调用时,您会使用前者。

你真的需要知道 blob 类型吗?

答案取决于您尝试执行的操作类型。有些操作只能在页 blob 上执行,而在块 blob 上执行这些操作会引发错误,反之亦然。此外,某些操作可以针对页面 blob 进行优化(例如下载页面 blob)。事先了解 blob 类型可能对您有所帮助。

于 2015-01-20T10:10:15.533 回答