Asp.Net: zip component for free | MrX

« (mscorlib)Insufficient system resources exist to complete the requested service | Main | MacBook Air in regalo con un webcontest »

Asp.Net: zip component for free

By Merlinox | June 19, 2008

Da qualche tempo utilizzo un componente free anzi opensource per creare e gestire file Zip in .  Il componente / libreria si chiama SharpZipLib, e fino a stamattina andava alla perfezione.

Il mio più grande errore è stato cercare info all’estero su questo componente. Comunque con un po’ di fatica, l’ho implementato e gli zip li fa proprio per bene. Il problema però, non appena il mio prodotto ha iniziato a essere utilizzato bene, è saltato subito all’occhio (del sistemista).

Con file di grosse dimensioni finiva la RAM e il server piazzava un bel memory overflow, o più esattamente: (mscorlib)Insufficient system resources exist to complete the requested service

Disperato, e quasi convinto di dover trovare un altro componente, fortunatamente ho pensato agli amici di HTML.it, e tramite loro ho scoperto il sito .Net2theMax.it!

La spiegazione di tutte le righe la trovate su .net2theMax.it, io voglio solo fare un appunto su qualche riga. La mia precedente procedura prendeva il file da comprimere, e lo sbatteva in un array di byte (più o meno) in questo modo:

byte[] buffer = new byte[fs.Length];
fs.Read(buffer, 0, buffer.Length);

Praticamente tutto il file in memoria. In una unica botta. Ma se il file è parecchi mega? Fortunatamente la soluzione non era cambiare componente ma sistemare il buffer:

while (fs.Position < fs.Length)
{
bytesRead = fs.Read(mBuffer, 0, mBuffer.Length);
zip.Write(mBuffer, 0, bytesRead);
crc.Update(mBuffer, 0, bytesRead);
}

E il mondo per un po’ a reiniziato a sorridere. Grazie a tutti e al mio amico Franz.

Piaciuto il post, condividilo:

Tags: , , , , , ,

Post simili

2 Responses to “Asp.Net: zip component for free”

  1. john aggiunge:

    zio biscio!

  2. Merlinox aggiunge:

    ehi john suppongo sia una approvazione, vero?

Comments