Molte delle applicazioni Windows Phone fanno l'uso della rete per accedere a risorse remote esposte tramite servizi REST o SOAP. Con essi le chiamate e la risposte passano in forma testuale, in XML o in JSON, e se di grosse dimensioni possono influire sulla velocità delle risposte, che può essere critica su dispositivi mobili.
Per dare il massimo dell'esperienza all'utente, è sempre quindi consigliabile ridurre al minimo di dati che devono transitare, ma oltre a questo c'è un'opzione subito sfruttabile che dà ottimi risultati: la compressione GZip. Il protocollo HTTP prevede, infatti, che si possa aggiungere tra gli header della richiesta uno di nome Accept-Encoding specificando GZip e/o Deflate (tra i più usati) come possibili algoritmi di compressione della risposta. Se il server lo supporta risponderà comprimendo la risposta e specificando l'header Encoding.
E' possibile facilmente supportare questo header anche nelle applicazioni Windows Phone, preparando a dovere la classe WebClient o HttpWebRequest e facendo uso di librerie come DotNetZip per la parte di decompressione. E' ancora più facile se si sfrutta una libreria che gestisce automaticamente le richieste, come SharpGIS.GZipWebClient. Poiché è disponibile con NuGet è sufficiente cercare tale libreria e installarla; una volta fatto è possibile utilizzare la classe SharpGIS.GZipWebClient in luogo di WebClient, oppure effettuare la seguente registrazione allo startup dell'applicazione:
WebRequest.RegisterPrefix("http://", SharpGIS.WebRequestCreator.GZip); WebRequest.RegisterPrefix("https://", SharpGIS.WebRequestCreator.GZip);
Automaticamente tutte le richieste verranno compresse e, soprattutto con contenuti testuali, si guadagnerà moltissimo nel traffico dati che deve transitare, anche fino all'80%.
Link a NuGet
http://nuget.org/packages/SharpGIS.GZipWebClient
Algoritmi di compressione in .NET
http://dotnetzip.codeplex.com/
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Persistere la ChatHistory di Semantic Kernel in ASP.NET Core Web API per GPT
Rendere le variabili read-only in una pipeline di Azure DevOps
Controllare la telemetria con .NET Aspire
Proteggere le risorse Azure con private link e private endpoints
Montare Azure Blob Storage su Linux con BlobFuse2
Supportare la crittografia di ASP.NET Core con Azure Container App
Abilitare automaticamente il force push di un gruppo su Azure DevOps
Scrivere selettori CSS più semplici ed efficienti con :is()
Testare l'invio dei messaggi con Event Hubs Data Explorer
Evitare memory leaks nelle closure JavaScript
Eseguire query in contemporanea con EF
Inference di dati strutturati da testo con Semantic Kernel e ASP.NET Core Web API
I più letti di oggi
- Usare i settings di serializzazione/deserializzazione di System.Text.Json di ASP.NET all'interno di un'applicazione non web
- The Agentic Day - Milano
- .NET Conference Italia 2025 - Milano
- Gestione ciclo di vita in .NET Aspire
- ecco tutte le novità pubblicate sui nostri siti questa settimana: https://aspit.co/wkly buon week-end!
- Gestione CSS in Blazor con .NET 9
- ecco tutte le novità pubblicate sui nostri siti questa settimana: https://aspit.co/wkly buon week-end!
- Gestione file Javascript in Blazor con .NET 9