2010-11-30 3 views
3

Je télécharge des blobs de manière asynchrone sur Azure Blob Storage. Je peux utiliser CloudBlockBlob.BeginUploadFromStream ou je pourrais appeler les méthodes de téléchargement synchrones (comme UploadFile ou PutBlock) avec un BackgroundWorker. Je cherche des opinions sur les avantages et les inconvénients de l'une ou l'autre approche.Téléchargement de Blob (s) Azure (s) Async: BeginUploadFromStream par rapport à BackgroundWorker

Je vais lancer le bal. Il semble beaucoup plus facile de rapporter des progrès avec l'approche BackgroundWorker.

Merci!

Répondre

3

BeginUploadFromStream sera plus efficace car il utilise le modèle de programmation asynchrone qui n'utilisera pas les ressources de l'unité centrale pendant l'exécution des E/S. Si vous lancez un BackgroundWorker et que vous appelez l'une des méthodes non-APM, vous gaspillez essentiellement ce thread pendant que des choses telles que la lecture à partir du disque et l'écriture sur le réseau se produisent.

Dans .NET, vous souhaitez pratiquement toujours utiliser le modèle APM lorsqu'il est disponible pour une efficacité maximale.

1

S'il vous plaît jeter un oeil à cet article here.

Il décrit comment télécharger des blobs en utilisant le téléchargement parallèle pour les blocs, ainsi que la progression du rapport et le téléchargement parallèle des blobs eux-mêmes.

Il contient également des liens vers this nice article, ce qui peut vous être utile si vous ne voulez pas effectuer de téléchargement de blocs en parallèle.

2

Je suis en train de mettre à jour cette vieille question parce que je reçois encore beaucoup de blogue de la publication de noir. Veuillez noter qu'il existe une nouvelle version de mon article de blog utilisant les méthodes * FromStream dans la bibliothèque Azure Storage Client 2.0. Ce nouveau code est plus performant et plus fiable, et fournit toujours tous les rapports d'avancement.

Asynchronous Parallel Block Blob Transfers with Progress Change Notification 2.0

Questions connexes