我正在将 Blob 异步上传到 Azure Blob 存储。我可以使用 CloudBlockBlob.BeginUploadFromStream,也可以使用 BackgroundWorker 调用同步上传方法(如 UploadFile 或 PutBlock)。我正在寻找有关这两种方法的利弊的一些意见。
我会让球滚动。使用 BackgroundWorker 方法报告进度似乎要容易得多。
谢谢!
我正在将 Blob 异步上传到 Azure Blob 存储。我可以使用 CloudBlockBlob.BeginUploadFromStream,也可以使用 BackgroundWorker 调用同步上传方法(如 UploadFile 或 PutBlock)。我正在寻找有关这两种方法的利弊的一些意见。
我会让球滚动。使用 BackgroundWorker 方法报告进度似乎要容易得多。
谢谢!
BeginUploadFromStream 会更高效,因为它使用异步编程模型,不会在 I/O 发生时耗尽 CPU 资源。如果您启动一个 BackgroundWorker 并调用任何非 APM 方法,那么您实际上是在浪费该线程,而诸如从磁盘读取和写入网络之类的事情正在发生。
在 .NET 中,您几乎总是希望在 APM 模型可用于最大效率时使用它。
我正在更新这个老问题,因为我仍然从 noir 的帖子中获得了很多博客点击。请注意,我的博客文章有一个新版本,它使用了 Azure 存储客户端库 2.0 中的 *FromStream 方法。这个新代码更高效、更可靠,并且仍然提供所有进度报告。