Delphi e Ajax para gerar código mais eficiente
03 de agosto de 2006, 20:26Ajax é um conceito que busca uma programação que facilite o lado do cliente, como evitar reloads desnecessários de páginas, por exemplo. Veja um exemplo aqui em combinação com Delphi, via JavaScript e XML.
Por
O conceito de convergência de diversas tecnologias já existentes para a apresentação de soluções mais eficientes na construção de websites, faz da implementação de códigos com Ajax (Asynchronous JavaScript and XML) uma realidade a qual não podemos ignorar.
Desde o início da internet os programadores têm encontrado uma série de dificuldades com relação à performance de seus códigos no lado cliente. Em tempo de produção, com uma situação ideal de pouco tráfego e alta velocidade de rede tudo vai bem, mas quando as páginas são distribuídas na web os problemas com a demora nos “reloads” das páginas a cada solicitação ao servidor começam a aparecer.
No mundo Delphi isto não é diferente. O programador Delphi cria suas aplicações web seguindo um ou mais dos modelos abaixo:
- Web Server Application (ISAPI ou CGI)
- WebSnap Application (também ISAPI ou CGI)
- IntraWeb Application (software proprietário da Atozed Software)
- Objetos distribuídos via MTS ou COM+ (acessados via ASP)
- Delphi.Net (“codebehind” delphi em páginas aspx)
Cada um dos modelos acima apresenta suas vantagens e desvantagens, porém todos com algo em comum: o reload completo da página para busca de informações que estão no servidor. E é neste ponto que entra o conceito de Ajax.
Antes de mais nada, Ajax é uma sigla que significa Asynchronous JavaScript and XML. Trata-se de um padrão, uma forma de programação, que envolve conceitos já existentes no mundo web, porém utilizados de forma conjunta e eficiente para trazer às páginas no lado cliente apenas aquelas informações requisitadas do servidor sem a necessidade de completo reload do conteúdo HTML.
E como isso é possível? Através da utilização via JavaScript de objetos de manipulação de dados XML. Veja um exemplo no código abaixo:
<script language="javascript">
function leCEP(cep)
{
if (window.XMLHttpRequest) {
req = new XMLHttpRequest();
processaLerCEP(req, cep, 'OTHER');
} else if (window.ActiveXObject) {
req = new ActiveXObject("Microsoft.XMLHTTP");
if (req) { processaLerCEP(req, cep, 'IE'); }
}
}
function processaLerCEP(req,cep,nav)
{
req.onreadystatechange = function() {
if (req.readyState == 4) {
if (req.status == 200) {
ret = req.responseXML.documentElement;
if (ret != null) {
endereco = ret.getElementsByTagName('endereco')[0].firstChild.data;
cidade = ret.getElementsByTagName('cidade')[0].firstChild.data;
uf = ret.getElementsByTagName('uf')[0].firstChild.data;
CIDADE.innerText = cidade;
UF.innerText = uf;
document.frmDados.ENDERECO.focus();
}
}
}
}
}
req.open("GET","consultacep.asp?CEP="+cep,true);
if (nav=="IE") {
req.send();
}
else {
req.send(null);
}
}
</script>
O código JavaScript acima faz justamente o prometido. Busca o CEP informado em um formulário HTML e preenche os campos CIDADE e UF sem necessidade de reload da página, e sem também ter que sobrecarregar a página colocando nesta, em seu código fonte HTML, toda uma lista de CEPs e cidades válidas.
Esta seria a nossa primeira (na realidade a última) parte do código. Podemos dizer que é a primeira pois é onde inicia-se a execução de todo o mecanismo, mas, em termos de desenvolvimento, seria a última coisa a fazermos. A primeira parte seria o nosso próprio código Delphi, que pode até já estar pronto em aplicações existentes, devendo apenas ser adaptado para dar a resposta adequada. Este código Delphi é acionado através da linha:
req.open("GET","consultacep.asp?CEP="+cep,true);
Neste exemplo, o arquivo consultacep.asp poderia acionar um objeto COM+, uma CGI ou uma ISAPI, qualquer um destes escritos em Delphi. Ou até mesmo, ao invés de uma consultacep.asp, chamarmos uma consultacep.aspx, com Delphi em seu codebehind. Qualquer uma destas aplicações Delphi teria que retornar o resultado da consulta de CEP em formato XML como no exemplo abaixo:
<?xml version='1.0' encoding='UTF-8' ?>
<response>
<cidade>NOME DA CIDADE LOCALIZADA</cidade>
<uf>UF</uf>
</response>
O código HTML do lado cliente será responsável, através da função JavaScript, por tratar o conteúdo XML retornado. Desta forma, os dados são obtidos no servidor e exibidos na página cliente sem a necessidade de post ou reload. Ou seja, a combinação de Delphi e Ajax gera aqui um código muito mais eficiente para o lado cliente. [Webinsider]


1° Anderson Soares Data: 04/08/2006 às 12:04 pm
Atividade: Desenvolvedor Web
Cidade: Teresina
No seu texto, tem uma linha: “…com uma situação ideal de pouco tráfico…”. Não seria “tráfego”?