3

我正在将 Blob 异步上传到 Azure Blob 存储。我可以使用 CloudBlockBlob.BeginUploadFromStream,也可以使用 BackgroundWorker 调用同步上传方法(如 UploadFile 或 PutBlock)。我正在寻找有关这两种方法的利弊的一些意见。

我会让球滚动。使用 BackgroundWorker 方法报告进度似乎要容易得多。

谢谢!

4

3 回答 3

3

BeginUploadFromStream 会更高效,因为它使用异步编程模型,不会在 I/O 发生时耗尽 CPU 资源。如果您启动一个 BackgroundWorker 并调用任何非 APM 方法,那么您实际上是在浪费该线程,而诸如从磁盘读取和写入网络之类的事情正在发生。

在 .NET 中,您几乎总是希望在 APM 模型可用于最大效率时使用它。

于 2010-12-02T04:14:40.850 回答
2

我正在更新这个老问题,因为我仍然从 noir 的帖子中获得了很多博客点击。请注意,我的博客文章有一个新版本,它使用了 Azure 存储客户端库 2.0 中的 *FromStream 方法。这个新代码更高效、更可靠,并且仍然提供所有进度报告。

具有进度更改通知 2.0 的异步并行块 Blob 传输

于 2013-03-06T21:29:23.267 回答
1

请在这里查看这篇文章。

它描述了如何使用块的并行上传来上传 Blob,以及报告进度和 Blob 本身的并行上传。

它还链接到这篇不错的文章,如果您不想进行并行块上传,您可能会发现它很有用。

于 2011-10-02T09:49:14.790 回答