Desenvolvimento - ASP

Garimpando componentes - parte I

Uma boa prática para continuar aprendendo é estar sempre vasculhando novidades que se escondem nesta vasta teia chamada Internet. Existem muitas comunidades de desenvolvedores, cada uma focada em uma determinada linguagem. Nestes sites, além de procurar soluções para seus problemas específicos, você pode também ter surpresas muito agradáveis, descobrindo idéias novas e códigos verdadeiramente quentes. Uma das grandes surpresas em que esbarrei em minhas aventuras foi o componente gratuito AspTear.

por Eraldo Júnior



Uma boa prática para continuar aprendendo é estar sempre vasculhando novidades que se escondem nesta vasta teia chamada Internet. Existem muitas comunidades de desenvolvedores, cada uma focada em uma determinada linguagem. Nestes sites, além de procurar soluções para seus problemas específicos, você pode também ter surpresas muito agradáveis, descobrindo idéias novas e códigos verdadeiramente quentes. Uma das grandes surpresas em que esbarrei em minhas aventuras foi o componente gratuito AspTear.

O trabalho do AspTear é bastante simples. Você indica uma determinada URL, o componente se comunica com esta URL via protocolo http e captura a saída desta página. Passando a limpo, o seu código passa a ser o Browser daquela página solicitada.

A partir deste ponto, todo o código deste site capturado pode ser manipulado pelo seu código da forma que você desejar. Vamos olhar um exemplo disso:

Listagem 1: Declaração de constantes para uso posterior

on error resume next
Const Request_POST = 1
Const Request_GET = 2
Set xobj = Server.CreateObject("SOFTWING.ASPtear")

Até o presente momento criamos duas constantes que serão usadas mais tarde e instanciamos o componente "SOFTWING.ASPtear", colocando-o dentro do objeto "xobj".

Listagem 2: Obtendo código de saída da URL

variavel_string = xobj.Retrieve("http://www.linhadecodigo.com.br", Request_POST ,"xxzz=3", "", "")

O método Retrieve comunica-se com a URL - http://www.linhadecodigo.com.br - capturando o seu código de saída. O processamento do código vai esperar o retorno do AspTear para continuar. Através de "variavel_string" você tem acesso a todo este código de saída da página solicitada, podendo manipulá-lo de acordo com a sua necessidade : enviando-o para o browser via "response.write", gravando em um Banco de Dados, enfim, aqui depende da sua criativade e da aplicação que esteja construindo.

Vamos olhar com mais calma o método Retrieve . Os parâmetros que devemos passar são os seguintes:

Retrieve(url, metodo , parametros, login, senha)

url - O endereço da página que desejamos capturar.

metodo - Post ou Get, para Post usamos 1, para Get usamos 2, ou então usamos o esquema de constantes como no exemplo acima. Aqui existe uma pequena sutileza. O AspTear faz um cache das páginas que você captura. Se você quer ter certeza que está capturando a versão mais atualizada de uma determinada página use sempre o método Post passando algum valor em parametros, mesmo que seja falso e que não seja processado pela página que recebe a chamada do AspTear. Repare que no exemplo acima passamos "xxzz=3". Por outro lado, se não é tão importante assim uma versão atualizada da página use o método Get. Isso vai fazer o seu código mais rápido porque ele vai ter que esperar menos tempo pelo retorno do AspTear, que estará usando o cache.

parametros - Pense neles como você pensaria os campos de um formulário em Html. São as variáveis que você estará passando para a página que vai receber a chamada do AspTear. Como você já deve ter percebido, é possível passar informações para uma página que não esteja dentro do seu site através desta técnica. A página que recebe as informações trata elas exatamente como trataria se fosse usado um formulário HTML. Você pode passar quantas variáveis desejar usando o seguinte formato - "nome=Eraldo&email=eraldosergio@bol.com.br&tel=2345678"

login e senha - Se o AspTear estiver acessando alguma página fechada por segurança, use estes campos para autenticar o AspTear com o Servidor que está hospedando a página fechada.

Agora que destrinchamos melhor o AspTear e vimos um pequeno exemplo de seu instanciamento, podemos falar em aplicações mais completas. Na primeira parte deste artigo desenvolveremos uma aplicação que faz um cache de páginas dinâmicas. Na segunda parte deste artigo falaremos de dois sites diferentes que precisam trocar cadastros, verificar permissões e de como o AspTear pode realizar este trabalho.

A idéia de nossa primeira aplicação é aumentar a velocidade de alguns sistemas dinâmicos que usam ASP. Na verdade a página que o AspTear chama não precisa ser ASP, pode ser qualquer linguagem que gere alguma saída para o Browser.

Na contrução de sistemas dinâmicos muitas vezes percebemos que nem sempre a página precisa ser processada a cada requisição de um cliente. Imagine o seguinte exemplo: uma página em ASP que é a capa de uma revista eletrônica, com as chamadas de diversas matérias e artigos que estão armazenados em um Banco de Dados. Cada requisição do usuário faz a página ASP comunicar-se com o Banco de Dados para montar o HTML que será então enviado ao usuário em seu browser. Este processo pode ser muito dispensioso em recursos de computação. Estudando melhor a questão notamos que estes artigos e matérias são atualizados somente de 3 em 3 horas, ou seja, na maior parte do tempo a página ASP vai ao Banco de Dados buscar as mesmas informações para montar o mesmo HTML.

Toda vez que nos deparamos com uma condição desta devemos pensar na criação de um sistema de cache. A idéia de criar um cache é fazer com que a página ASP envie um HTML previamente construído, evitando assim uma série de processamentos que não são necessários, aliviando o overhead do sistema. Segue abaixo um exemplo deste sistema de cache.

Vamos imaginar que a página que montava dinamicamente as chamadas da revista eletrônica se chamava "revista.asp". Vamos copiar o código desta página "revista.asp" para um novo arquivo, que neste exemplo vamos chamar de "querydinamica.asp". Em seguida reescrevemos a página "revista.asp", colocando o seguinte código que implementa o cache:

Listagem 2: Implementação de sistema de cache

"O seguinte código abaixo implementa um sistema de cache. Os comentários vão "explicando o que cada parte do código implementa.
on error resume next
Response.Expires = 0
"este if verifica se já se passaram 3 horas a partir de um determinado instante que está armazenado em Application("hora_gravacao"). A condição sendo verdadeira significa que está na hora de renovar o cache.
if datediff("h", Application("hora_gravacao"), now())>=3 then
Const Request_POST = 1
Const Request_GET = 2
Set xobj = Server.CreateObject("SOFTWING.ASPtear")
" AspTear vai na página antiga revista.asp que foi renomeada para querydinamica.asp. A saída da página fica armazenada em pagina_temporaria
pagina_temporaria=xobj.Retrieve("http://www.seusite.com.br/querydinamica.asp", 1 ,"xxzz=3", "","")
" se ocorrer algum erro vamos redirecionar o fluxo para querydinamica.asp
If Err.Number <>0 Then
Set xobj=nothing
response.redirect("http://www.seusite.com.br/querydinamica.asp")
end if
" nao ocorreu nenhum erro.
" Application("hora_gravacao") guarda a hora em que o cache foi renovado.
Application("hora_gravacao") = now()
" Application("cache") guarda o conteúdo de querydinamica.asp
Application("cache") = pagina_temporaria
Set xobj=nothing
" envia o codigo de querydinamica.asp para o browser do usuário
Response.Write Application("cache")
else
" a condicao é falsa, o que significa que podemos continuar usando o cache
" envia o codigo de querydinamica.asp para o browser do usuário
Response.Write Application("cache")
end if

Adapte este exemplo para a sua realidade e veja como a performace do seu sistema vai melhorar.

http://www.alphasierrapapa.com/IisDev/Components/AspTear/ - para baixar o componente AspTear e ler documentação adicional.

No próximo artigo mais exemplos de aplicações úteis usando o AspTear.

Abraços e boa programação !!!

Eraldo Júnior

Eraldo Júnior - Programador há mais de 10 anos, trabalha com desenvolvimento Web há 5 anos, tendo participado como consultor de projetos para as seguintes empresas: Embratel, Rede Globo e Maria Bonita Confecções. Atualmente é o programador do site Ti Master e consultor em projetos Web da empresa Infodream, http://www.infodream.com.br