I file sono archiviati in un contenitore all'interno di un account di archiviazione BLOB. Devo creare un file zip in un secondo contenitore contenente i file dal primo contenitore.Creazione di un file zip all'interno della memoria BLOB BLU
Ho una soluzione che funziona utilizzando un ruolo di lavoro e DotNetZip ma perché il file zip potrebbe finire per essere di 1 GB di dimensioni sono preoccupato che fare tutto il lavoro in-process, utilizzando oggetti MemoryStream
ecc non è il modo migliore di fare questo. La mia più grande preoccupazione è quella dell'utilizzo della memoria e della liberazione delle risorse, poiché questo processo potrebbe verificarsi più volte al giorno.
seguito alcune molto ridotta di codice che mostra il processo di base nel ruolo dei lavoratori:
using (ZipFile zipFile = new ZipFile())
{
foreach (var uri in uriCollection)
{
var blob = new CloudBlob(uri);
byte[] fileBytes = blob.DownloadByteArray();
using (var fileStream = new MemoryStream(fileBytes))
{
fileStream.Seek(0, SeekOrigin.Begin);
byte[] bytes = CryptoHelp.EncryptAsBytes(fileStream, "password", null);
zipFile.AddEntry("entry name", bytes);
}
}
using (var zipStream = new MemoryStream())
{
zipFile.Save(zipStream);
zipStream.Seek(0, SeekOrigin.Begin);
var blobRef = ContainerDirectory.GetBlobReference("output uri");
blobRef.UploadFromStream(zipStream);
}
}
Qualcuno può suggerire un approccio migliore per favore?
+1 per l'utilizzo del latino. ;) – TrueWill
Sì, l'utilizzo delle risorse come memoria, CPU nei servizi cloud webrole/workrole è sempre interessato. È degno di essere considerato. +1 –