Os servidores modernos de internet permitem comprimir os dados por eles devolvidos utilizando GZip, um algoritmo standard para compressão de dados.
A compressão de dados nas comunicações é especialmente importante para os dispositivos móveis, em que normalmente o acesso à internet feito através da rede móvel é limitado (e caro!)
Se os dados foram comprimidos antes de serem devolvidos ao cliente, vamos gastar menos bytes no envio, e como tal estamos a ganhar tanto em tráfego como em velocidade: os ganhos da compressão com GZip podem ir de 50% a 80%, de acordo com algumas estatísticas online.
Apesar de grande parte dos dispositivos de acesso à internet estar preparado para receber dados comprimidos neste formato, o Windows Phone aparentemente não está, pelo menos no que toca ao HttpWebRequest, o objecto utilizado por base para comunicação em HTTP na .NET Framework!
Opção 1: a minha aplicação usa HttpWebRequest ou WebClient
Uma solução para esta situação é utilizar o GZipWebClient do Morten Nielsen, disponível por NuGet e em código aberto no GitHub.
Depois de juntarem o componente ao vosso projecto, juntem estas duas linhas no início da aplicação:
WebRequest.RegisterPrefix("http://", SharpGIS.WebRequestCreator.GZip);
WebRequest.RegisterPrefix("https://", SharpGIS.WebRequestCreator.GZip);
Feito isto, sempre que criarem uma nova instância do HttpWebRequest ou do WebClient, este estará pronto para funcionar com GZip!
Opção 2: A minha aplicação usa RestSharp
Bem, no caso do RestSharp, desde a versão 102.6 que tudo o que tem a fazer é, antes de executarem o vosso pedido, juntar o Http Header que indica que aceitam dados comprimidos com GZip na resposta!
var client = new RestClient("http://some.url/service");
client.AddDefaultHeader("Accept-Encoding", "gzip");
Como podem aqui ver, o truque está na ultima linha, em que damos indicação ao servidor que o cliente vai aceitar dados comprimidos com GZip.
O RestSharp ao receber a resposta vai validar o formato dos dados, e se estes foram comprimidos encarregar-se-á de os descomprimir!
Simples e eficáz!
Nota: Dado que a alteração para suporte de GZip no RestSharp foi incluída por mim, agradeço que se detectarem algum problema me façam chegar essa informação!




