#975 - Utilizzare la compressione GZIP con ASP.NET
di Andrea Zani, in ASP.NET 2.0, System.IO, System.IO.Compression, 23 febbraio 2009
Oltre alle classi esterne come SharpZipLib, dalla versione 2.0 del .NET Framework è disponibile una classe apposita per la compressione degli stream.
Vediamo un esempio semplice per comprimere un file:
string SourceFile = "C:\\file.txt"; string DestinationFile = "C:\\file.gzip"; using (FileStream streamWriter = new FileStream(DestinationFile, FileMode.Create, FileAccess.Write, FileShare.None)) { using (FileStream streamReader = new FileStream(SourceFile, FileMode.Open, FileAccess.Read, FileShare.Read)) { using (GZipStream gzip = new GZipStream(streamWriter, CompressionMode.Compress, true)) { byte[] buffer = new byte[streamReader.Length]; streamReader.Read(buffer, 0, buffer.Length); gzip.Write(buffer, 0, buffer.Length); } } }
E per la decompressione:
string SourceFile = "C:\\file.gzip"; string DestinationFile = "C:\\file.txt"; using (FileStream streamReader = new FileStream(SourceFile, FileMode.Open, FileAccess.Read, FileShare.Read)) { using (FileStream streamWriter = new FileStream(DestinationFile, FileMode.Create, FileAccess.Write, FileShare.None)) { using (GZipStream gzip = new GZipStream(streamReader, CompressionMode.Decompress, true)) { const int bufferSize = 1024; byte[] buffer = new byte[bufferSize]; while (true) { int count = gzip.Read(buffer, 0, bufferSize); if (count != 0) streamWriter.Write(buffer, 0, count); else break; } } } }
Questa tecnica è applicabile a qualsiasi tipo di Stream, dunque si può sfruttare anche in HttpModule per comprimere al volo, in determinati casi e senza utilizzare le funzionalità native di IIS, il contenuto servito da una pagina.
Approfondimenti
-
Single Sign-on con ASP.NET, Infocard e Live ID
-
#aspnet4, #vs 2010 beta 2 whitepaper http://u.aspitalia.com/ab
-
#999 - Mostrare una finestra di dialogo popolata tramite AJAX utilizzando jQuery
-
Disponibile la beta 1 del .NET Framework 4.0 e di Visual Studio 2010
-
#982 - Introduzione al databinding con ASP.NET MVC
-
#974 - Aggiungere il supporto a DesignTime per un custom control di ASP.NET con Template
-
Quando scegliere ASP.NET MVC e WebForms: differenze, pro e contro
-
#1000 - Gestire l'input di date tramite il controllo DatePicker di jQuery UI
-
#976 - ASP.NET ed Entity Framework: query di filtro ed ordinamento con EntityDataSource
-
#157 - Serializzare e deserializzare in JSON con DataContractJsonSerializer
-
#983 - Modificare le impostazioni dell'Handler dei controlli di charting di ASP.NET
-
Real Code Day 4.0: costruire applicazioni reali - Firenze

















Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.