Março 2004 - Posts

 

Vejam aqui

http://weblogs.pontonetpt.com/ssilveira/posts/679.aspx

Compressão HTTP & Web Services Comprimidos

(HTTP Compression & Compressed Web Services)

 

Introdução

A tecnologia de compressão de dados por HTTP, que surge como uma nova funcionalidade no Windows 2003 Server com IIS 6.0. é, na minha opinião, uma das melhores jamais criadas, para melhorar a transmissão de dados via Internet.

Em seguida falarei um pouco dessa tecnologia e como tirar partido da mesma, nomeadamente com Web Services.

 

De que se trata a compressão HTTP?

Trata-se de uma tecnologia que permite o serviço de páginas (ou qualquer tipo de informação que seja definida) muito mais rápidamente ao Cliente desde que utilizando o protocolo HTTP. Poupando assim na largura de banda necessária e evitando os longos periodos de espera.

 

Como funciona ?

Basicamente, depois de activada, acaba por funcionar da seguinte forma:

1.      O Servidor (Web Server) recebe um pedido de um ficheiro por parte do Cliente.

2.      O mesmo Servidor, em seguida, verifica se o browser do Cliente suporta compressão (se tem capacidade para descomprimir a informação compactada e enviada pelo Servidor - Compression Enabled)

3.      Caso não se verifique o acima assinalado, então o Servidor serve o ficheiro tal e qual como existe - directamente - seja ele estáctico ou dinâmico.

4.      Caso contrário é verificada a extensão do ficheiro pedido, e se o mesmo for estático, e não existir já em Cache, então é enviada a versão descompactada para o Cliente, e uma compactada para a directoria temporária de Cache comprimida (Compression Cache Temporary Directory). Por outro lado se já existir na Cache será servido o ficheiro já compactado dessa directoria (O IIS só serve os ficheiros compactados através da directoria temporária).

5.      Se o ficheiro for dinâmico, este é compactado on-the-fly e servido para o Cliente (não é utilizada nenhuma directoria temporária).

 

Como activar?

Como já existem vários exemplos na internet sobre este capítulo, aconselho-vos este artigo de Donny Mack que explica detalhadamente como o fazer. Aliás devo dizer que foi através deste artigo que eu tomei conhecimento desta funcionalidade e de como a activar.

Enabling HTTP Compression in IIS 6.0

 

Web Services Comprimidos

Depois de lerem o artigo indicado, decerto que acabaram por compreender que no final de contas é relativamente fácil a configuração da compressão no IIS 6.0.

Por isso, passemos a coisas mais sérias.

Para quem não sabe o que são ou como funcionam Web Services fica aqui este link.

See What Web Services Can Do For You

Web Services Comprimidos são no fundo, comuns WS’s que tiram partido da compressão HTTP. E para tal acontecer basta adicionarem à configuração de ficheiros dinâmicos, a extensão ‘asmx’ (ver no artigo indicado). Simples, não?

Vantagens

  • Não é preciso programar nada.
  • Todo o acesso ao WS terá a sua resposta comprimida, sendo a resposta em XML, imaginem um ficheiro XML ‘zipado’!? O seu tamanho pode ser reduzido em até 75%. Tornando o acesso até 12X mais rápido que o normal e vencendo o acesso directo à Base de Dados em quase 3X!!!(De acordo com os testes efectuados).

Desvantagens

  • Só podem ser implementados em Windows 2003 Server com IIS 6.0
  • O Cliente têm de ter a capacidade de descomprimir a informação. (Ex: Internet Explorer 6)
  • Aumento da carga de processamento no servidor (embora, até agora, nos meus testes só tenha atingido a fasquia dos 15% que imediatamente é reduzida para 1% ou mesmo 0%)

 

Exemplo Real

Para a obtenção desta informação, foram feitas três tentativas por método e em duas máquinas diferentes, embora configuradas da mesma forma.

O Dataset era do tipo Typed Dataset, e o mesmo continha 11 tabelas, todas elas com informação.

O tamanho do Dataset foi obtido do ficheiro gerado em Xml no disco, através da instrução - MyDataset.WriteXml(“c:\mydataset.xml”)

Este exemplo é virtualmente perfeito pois no seu conteúdo, uma das tabelas continha cerca de 190 thumbnails de imagens em jpg. 

Configuração do Servidor de Testes:

§         Intel Pentium 4 2.66 Mhz

§         1 Gb Ram

§         Disco de 40Gb

§         Windows 2003 Server

Configuração do Cliente (2 PC’s Idênticos):

§         Intel Pentium 4 2.66 Mhz

§         1 Gb Ram

§         Disco de 40Gb

§         Windows XP Professional SP1

§         Internet Explorer 6

Rede:

§         Lan 100 Mbps

 

 

 

 

 

 

 

 

Download do Dataset - 967Kb

 

Início

Fim

Diferença

DAL

741

883

142

Web Services

14

766

752

Web Services Comprimidos

503

565

62

 

 

unidade: milisegundos

Nota: Os valores em milisegundos das Colunas [Início] e [Fim] acontecem no mesmo segundo.

 

 

Conclusão

Mediante os vários testes realizados nas aplicações que neste momento estou a desenvolver, digo, e nunca pensei em dizê-lo, que o acesso directo à Base de Dados foi ultrapassado pelo acesso indirecto por Web Services, desde que comprimidos.

O mais engraçado é que não são só números... Notam-se claramente as diferenças de velocidade na obtenção da informação.

Agradecia o vosso feedback depois de experimentarem, para, defacto, confirmar o que digo num leque muito mais vasto de ambientes e aplicações. (Não tinha piada se só funcionasse comigo pois não? :)

Qualquer correcção é bem vinda, foi o meu primeiro artigo.

Até à próxima.

                      Sérgio Silveira

 

 

?>

Caros colegas de profissão

Decerto que já ouviram falar de compressão http e alguns de vós já devem ter implementado esta funcionalidade.

Mas... Já repararam que se adicionarem a extenção - asmx - dos webservices à configuração,  a informação obtida dos web services também é comprimida?

Melhor ainda! Dos testes preliminares que fiz hoje de manhã, denotei que o acesso por webservices comprimidos à B.D. fica mais rápido do que um acesso directo(sem web services)!

Gostaria de ter algum feedback.

PS- Se pedirem muito, faço um breve artigo em português, de como activar a compressão. (vai ser escrito na mesma! Eh! Eh! Eh!)