Azure - Update einer bestehenden xml-Datei in BLOB-Speicher

Habe ich XML-Dateien in BLOB-Speicher und ich bin versucht, herauszufinden, was ist der effizienteste Weg, um Sie zu aktualisieren ( und/oder fügen Sie einige Elemente, um Sie). In einer WebRole, ich kam mit dieser :

using (MemoryStream ms = new MemoryStream())
{                    
      var blob = container.GetBlobReference("file.xml");
      blob.DownloadToStream(msOriginal);
      XDocument xDoc= XDocument.Load(ms);  

      //Do some updates/inserts using LINQ to XML.  

      blob.Delete();//Details about this later on.

      using(MemoryStream msNew = new MemoryStream())  
      {
           xDoc.Save(msNew);
           msNew.Seek(0,SeekOrigin.Begin);
           blob.UploadFromStream(msNew);                    
      }                               
}

Ich bin auf der Suche auf diese Parameter unter Berücksichtigung der Effizienz:

  1. BLOB Transaktionen.
  2. Bandbreite. (Nicht sicher, ob es gezählt, da der code läuft im data-center).
  3. Speicher Verbrauch auf die Instanz.

Einige Dinge zu erwähnen:

  • Meine xml-Dateien werden etwa 150-200 KB.

  • Ich bin der Tatsache bewusst, dass XDocument lädt die ganze Datei in
    Speicher, und arbeiten in streams ( XmlWriter und XmlReader ) könnte
    lösen Sie dieses. Aber ich nehme an, dies erfordert die Zusammenarbeit mit BlobStream
    das könnte dazu führen, dass weniger effiziente Transaktion-Weise (denke ich).

  • Etwa blob.Löschen(), ohne dass es die hochgeladenen xml-Datei in den blob-Speicher
    scheint zu fehlen einige schließende tags am Ende. Ich nahm
    dies wird verursacht durch eine Kollision mit den alten Daten. Ich könnte
    völlig falsch hier, aber mit dem löschen gelöst ( kostet ein
    mehr Transaktion, obwohl ).

Ist der code, den ich zur Verfügung gestellt ist eine gute Praxis, oder vielleicht eine effizientere Möglichkeit besteht unter Berücksichtigung der Parameter, die ich erwähnt ?

InformationsquelleAutor Yaron Levi | 2011-10-04
Schreibe einen Kommentar