Загрузка асинхронных BLOB-объектов Azure: BeginUploadFromStream и BackgroundWorker - PullRequest
3 голосов
/ 30 ноября 2010

Я загружаю BLOB-объекты асинхронно в хранилище BLOB-объектов Azure.Я могу использовать CloudBlockBlob.BeginUploadFromStream или вызвать синхронные методы Upload (например, UploadFile или PutBlock) с помощью BackgroundWorker.Я ищу мнения о плюсах и минусах обоих подходов.

Я получу мяч катится.Намного легче сообщить о прогрессе с помощью подхода BackgroundWorker.

Спасибо!

Ответы [ 3 ]

3 голосов
/ 02 декабря 2010

BeginUploadFromStream будет более эффективным, поскольку он использует модель асинхронного программирования, которая не будет использовать ресурсы ЦП во время ввода-вывода. Если вы раскручиваете BackgroundWorker и вызываете любой из методов, не относящихся к APM, вы по сути тратите этот поток, в то время как происходит чтение с диска и запись в сеть.

В .NET вы почти всегда хотите использовать модель APM, когда она доступна для максимальной эффективности.

2 голосов
/ 07 марта 2013

Я обновляю этот старый вопрос, потому что я все еще получаю много посещений блога из поста нуара. Обратите внимание, что появилась новая версия моего блога с использованием методов * FromStream в библиотеке клиента хранилища Azure 2.0. Этот новый код является более производительным и более надежным, и, тем не менее, предоставляет все отчеты о ходе выполнения.

Асинхронные параллельные блочные передачи с уведомлением об изменении процесса 2.0

1 голос
/ 02 октября 2011

Пожалуйста, посмотрите на эту статью здесь .

В нем описывается, как загружать большие двоичные объекты с использованием параллельной загрузки для блоков, а также сообщать о ходе выполнения и параллельной загрузке самих больших двоичных объектов.

Он также ссылается на эту замечательную статью , которая может оказаться полезной, если вы не хотите загружать параллельные блоки.

...