对于 Azure Blob Storage .NET 客户端,"Microsoft.Azure.Storage.DataMovement" 和 "Azure.Storage.Blobs" 之间有什么区别?

For Azure Blob Storage .NET Client, what is the difference between "Microsoft.Azure.Storage.DataMovement" and "Azure.Storage.Blobs"?

所以我们开始在 ASP.NET Core 3.1 网络应用程序中使用 blob 存储,我注意到有两个 .NET Microsoft 库用于处理 blob 存储上传和操作。

  1. Azure.Storage.Blobs Azure Storage Blobs client library for .NET: This is the more active of two repos and it is mentioned in the docs.
  2. Microsoft.Azure.Storage.DataMovement Microsoft Azure Storage Data Movement Library:它依赖于旧版本的 Azure.Storage.Blobs 并且具有模糊的描述 The Microsoft Azure Storage Data Movement Library designed for high-performance uploading, downloading and copying Azure Storage Blob and File

唯一明显的区别是 Microsoft.Azure.Storage.DataMovement 支持 .NET 4.5.2 并且某些调用有所不同。

我想知道这两个库之间的区别是什么?

除了正常的 Azure.Storage.Blobs 客户端之外,Microsoft.Azure.Storage.DataMovement 还提供哪些功能?

最后,如果将项目从 Azure.Storage.Blobs 切换到 Microsoft.Azure.Storage.DataMovement 可以提高 blob 上传的性能。

如 GitHub 描述中所说,DataMovement 包主要代表所有操作,您也可以使用命令行工具 AzCopy.

This library is based on the core data movement framework that powers AzCopy.

您可以在此处找到一些常见 DataMovement 用例的示例: https://docs.microsoft.com/en-us/azure/storage/common/storage-use-data-movement-library

对我来说最常见的用例是在 blob 存储帐户之间传输文件或将文件上传到帐户而无需通过您的客户端传输它们。基础 Azure.Storage.Blobs 库不支持任何这些。还有更多功能,但这些是我的亮点。

所以在你的情况下,如果你的数据可以直接传输到存储帐户而不需要通过你的网络应用程序,那肯定可以提高上传速度。对于其他情况,它可能仍然比您当前正在做的任何事情都快一点,但是根据给定的信息很难说。