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
Generare file PDF da Blazor WebAssembly con iText
Utilizzare Azure AI Studio per testare i modelli AI
Evitare (o ridurre) il repo-jacking sulle GitHub Actions
Disabilitare automaticamente un workflow di GitHub (parte 2)
Ottimizzare le performance delle collection con le classi FrozenSet e FrozenDictionary
Cambiare la chiave di partizionamento di Azure Cosmos DB
Sviluppare un'interfaccia utente in React con Tailwind CSS e Preline UI
Copiare automaticamente le secret tra più repository di GitHub
Sfruttare i KeyedService in un'applicazione Blazor in .NET 8
Personalizzare l'errore del rate limiting middleware in ASP.NET Core
Migrare una service connection a workload identity federation in Azure DevOps
Le novità di Angular: i miglioramenti alla CLI