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
Routing statico e PreRendering in una Blazor Web App
Load test di ASP.NET Core con k6
Usare il versioning con i controller di ASP.NET Core Web API
Inizializzare i container in Azure Container Apps
Disabilitare automaticamente un workflow di GitHub
Sfruttare al massimo i topic space di Event Grid MQTT
Definire stili a livello di libreria in Angular
Utilizzare i primary constructor in C#
Evitare (o ridurre) il repo-jacking sulle GitHub Actions
.NET Conference Italia 2023
Eseguire operazioni sui blob con Azure Storage Actions
Utilizzare la libreria Benchmark.NET per misurare le performance