Téléchargement parallèle d'images Azob blob, quelle peut être une meilleure option?

J'ai une liste et chaque message a une image et une liste maintenant j'ai besoin de mettre à jour l'URL de blob pour l'image et l'attachement pour chaque message

    

solution 1:     appelez UploadBlob pour l'image et et un appel à UploadBlob pour chaque pièce jointe, puis mettez à jour l'objet de message dans la base de données avec l'URL de blob

         

Solution 2     télécharger l'image et toutes les pièces jointes en une seule fois et utiliser le chargement parallèle et mettre à jour le BLob URl et enregistrer le message en DB, chaque message a un identifiant unique alors lors du téléchargement sur blob je peux définir cet identifiant pour créer un URL blob unique, mettre à jour le message j'ai besoin de mapper des identifiants de message avec l'URL de blob qui contient l'identification de message

  

si vous avez une autre solution pour augmenter la lisibilité du code et la performance

0

2 Réponses

Base sur ma compréhension, ressemble à la solution 2 est meilleure.

Nous pourrions télécharger plusieurs fichiers en parallèle avec l'aide de la bibliothèque parallèle de tâches: http://msdn.microsoft.com/en-us/library/dd460717.aspx . Nous pourrions aussi utiliser le pattern async (appelez les méthodes Begin/End). Mais il vaudrait mieux ne pas télécharger trop de fichiers en même temps. Si trop de demandes Web en attente se produisent, certaines d'entre elles peuvent échouer. Par exemple, nous pouvons choisir de créer 10 tâches, attendre que 1 se termine, puis créer le 11ème.

Meilleures salutations,

Ming Xu.

0
ajouté

Je ne sais pas si je comprends bien la question, mais ... il semble que chaque message aura une image et zéro ou plusieurs pièces jointes, et que l'objet de message doit avoir une référence à l'image et aux pièces jointes.

Si c'est une interprétation correcte: chaque téléchargement irait dans son propre blob. Même avec la solution n ° 2 ci-dessus, vous obtiendrez toujours plusieurs URI de blob après tous les téléchargements.

Je ne sais pas si cela correspond à votre application, que ce soit une application de bureau qui télécharge ou une application Web qui prend des images et des pièces jointes d'un utilisateur final, puis les transfère en blobs (en même temps qu'un enregistrement de base de données ). Si c'est le dernier: je suggérerais ceci:

  1. Écrire l'enregistrement du message (qui vous donnerait probablement un type d'identifiant unique)
  2. Lors de la réception de chaque image ou pièce jointe, chargez-la vers le stockage blob, puis mettez à jour le message avec l'adresse URI résultante

Vous pouvez lancer des tâches parallèles pour télécharger chaque image ou pièce jointe, puis mettre à jour l'enregistrement de message. Tant que vous avez la bande passante, le téléchargement parallèle va en faire un usage plus important, jusqu'à un certain point. Chaque compte de stockage a un plafond de débit (5 000 transactions par seconde et 3Gbps).

Il existe certainement d'autres approches, comme l'introduction d'une file d'attente pour les mises à jour de messages, l'utilisation d'un modèle CQRS, etc. Une partie de la décision sera basée sur l'architecture de l'application (comme je l'ai dit le téléchargement vers le stockage blob, ou un serveur web effectuant les téléchargements).

0
ajouté
Salut david c'est une application Web qui envoie une demande au service WCF et WCF appelle l'entreprise où j'ai implémenté les méthodes pour télécharger vers blob, je ne peux pas contrôler les messages comme je l'obtiens d'un xml et il peut contenir 1000 de messages message peut contenir plusieurs pièces jointes, l'application qui génère le fichier xml vérifie que les pièces jointes sont de petite taille en Kb
ajouté l'auteur Nitin Bourai, source