Paralel Încărcarea imaginilor în Azure blob care poate fi o opțiune mai bună?

am o listă și fiecare mesaj are o imagine și o listă acum am nevoie pentru a actualiza url blob pentru imagine și atașament pentru fiecare mesaj

    

soluția 1:     apelați UploadBlob pentru imagine și un apel la UploadBlob pentru fiecare atașament și apoi actualizați Obiectul mesajului în DB cu adresa URL Blob

         

Soluția 2     încărcați imaginea și Toate fișierele dintr-o dată și utilizați încărcarea paralelă și actualizați Blob URl și salvați mesajul în DB, fiecare mesaj are un ID unic astfel încât în ​​timp ce încărcați în blob i pot seta acest id pentru a crea o blob url care este unic, pentru a actualiza mesajul trebuie să hărțesc ID-uri de mesaje cu adresa URL Blob care conține ID-ul mesajului

  

dacă aveți orice altă soluție pentru a crește lizibilitatea codului și performanța pls Sfaturi

0

2 răspunsuri

Pe baza înțelegerii mele, se pare că soluția 2 este mai bună.

Am putea încărca mai multe fișiere în paralel cu ajutorul sarcinilor paralele bibliotecă: http:// msdn.microsoft.com/en-us/library/dd460717.aspx. De asemenea, am putea folosi modelul de asincronizare (apelați metodele Begin/End). Dar ar fi mai bine să nu încărcăm prea multe fișiere în același timp. Dacă apar prea multe solicitări web în așteptare, unele dintre ele pot eșua. De exemplu, putem alege să creăm 10 sarcini, să așteptăm să terminem 1 și apoi să creăm al 11-lea.

Toate cele bune,

Ming Xu.

0
adăugat

Nu sunt sigur dacă înțeleg complet întrebarea, dar ... se pare că fiecare mesaj va avea o imagine și un atașament zero sau mai multe și că obiectul mesajului trebuie să aibă o referință la imagine și la atașamentele aferente.

Dacă aceasta este o interpretare corectă: Fiecare încărcare ar merge în propriul bule. Chiar și cu soluția # 2 de mai sus, ați fi terminat cu mai multe URI-uri blob după toate încărcările.

Nu pot spune unde se potrivește aplicația dvs., fie că este vorba despre o aplicație desktop care face încărcările, fie despre o aplicație web care face imagini și atașamente de la un utilizator final, apoi le încarcă în coloane (împreună cu o înregistrare a bazei de date fiind scrisă ). Dacă acesta este ultimul: aș sugera următoarele:

  1. Scrieți înregistrarea mesajului (care ar presupune probabil că vă oferă un anumit tip de identificator unic)
  2. Când primiți fiecare imagine sau atașament, încărcați-l în spațiul de stocare blob și apoi actualizați mesajul cu URI rezultatul

Puteți să lansați sarcini paralele pentru a încărca fiecare imagine sau atașament și apoi să actualizați înregistrarea mesajelor. Atâta timp cât aveți lățimea de bandă, încărcarea paralelă o va folosi mai mult, până la un punct. Fiecare cont de stocare are un capac de transfer (5000 tranzacții pe secundă și 3Gbps).

Există cu siguranță abordări alternative, cum ar fi introducerea unei coadă pentru Actualizări de mesaje, utilizând un model CQRS etc. O parte a deciziei se va baza pe arhitectura aplicației (așa cum am spus, nu pot spune dacă aceasta este o aplicație desktop încărcarea pentru stocarea blob sau pentru un server web care face încărcările).

0
adăugat
Hi david este o aplicație Web care trimite o cerere la serviciul WCF și WCF apelează la Business unde am implementat metodele de încărcare în blob, nu pot controla mesajele așa cum am primit de la un xml și poate conține 1000 de mesaje și fiecare mesajul poate conține atașamente multiple, aplicația care generează xml asigură faptul că atașamentele sunt de dimensiuni mici în Kb
adăugat autor Nitin Bourai, sursa