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

Are blobs created with Azure SDK v1.8 page blobs or block blobs?

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

代码从不明确要求制作块 bob 或页面 blob - 仅 "just blobs"。

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

他们看起来很像。我们的存储中已经有很多 blob,宁愿保持不变。

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

Are blobs created with Azure SDK v1.8 page blobs or block blobs?

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

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

Difference between CloudBlobContainer.GetBlobReferenceFromServer() and CloudBlobContainer.Get[Block|Page]BlobReference()

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

Do you really need to know the blob type?

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