2010-11-30 11 views
3

Ich lade Blobs asynchron in Azure Blob Storage hoch. Ich kann CloudBlockBlob.BeginUploadFromStream verwenden oder ich könnte die synchronen Upload-Methoden (wie UploadFile oder PutBlock) mit einem BackgroundWorker aufrufen. Ich suche nach einigen Meinungen über die Vor- und Nachteile beider Ansätze.Hochladen von Azure Blob (s) Async: BeginUploadFromStream vs. BackgroundWorker

Ich werde den Ball ins Rollen bringen. Es scheint viel einfacher zu sein, den Fortschritt mit dem BackgroundWorker-Ansatz zu melden.

Danke!

Antwort

3

BeginUploadFromStream wird effizienter sein, da es das asynchrone Programmiermodell verwendet, das während der E/A keine CPU-Ressourcen verbraucht. Wenn Sie einen BackgroundWorker hochfahren und eine der Nicht-APM-Methoden aufrufen, verschwenden Sie diesen Thread im Wesentlichen, während Dinge wie Lesen von der Festplatte und Schreiben in das Netzwerk auftreten.

In .NET möchten Sie das APM-Modell immer dann verwenden, wenn es für maximale Effizienz verfügbar ist.

1

Bitte werfen Sie einen Blick auf diesen Artikel here.

Es beschreibt, wie Blobs mit dem parallelen Upload für Blöcke hochgeladen werden können, sowie den Fortschritt und den parallelen Upload von Blobs selbst.

Es verweist auch auf this nice article, die Sie nützlich finden könnten, wenn Sie keine parallelen Block-Uploads durchführen möchten.

2

Ich aktualisiere diese alte Frage, weil ich immer noch eine Menge Blog-Hits von Noir's Post bekomme. Beachten Sie, dass eine neue Version meines Blogposts die Methoden von * FromStream in der Azure Storage Client-Bibliothek 2.0 verwendet. Dieser neue Code ist leistungsfähiger und zuverlässiger und bietet weiterhin alle Fortschrittsberichte.

Asynchronous Parallel Block Blob Transfers with Progress Change Notification 2.0