Webinsider

Desenvolvimento - Tecnologia - Redes sociais

Delphi e Ajax para gerar código mais eficiente

03 de agosto de 2006, 20:26

Ajax é 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 Eduardo Rodrigues de Moraes

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]

Sobre o autor

Eduardo Rodrigues de Morais (eduardo@crea-pr.org.br) é mestre em Educação, Cultura e Tecnologia pela UFPR e programador de computadores.

Apoio:

  • LayerDev Serviços de Webhosting Profissional

Palavras-chave relacionadas a este texto: [ formulários ]

Comentários

20 pessoas comentaram o artigo "Delphi e Ajax para gerar código mais eficiente"

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”?

Eduardo Moraes Data: 04/08/2006 às 1:28 pm

Atividade:

Cidade: Curitiba - PR

Apesar de na língua portuguesa tanto “tráfego” quanto “tráfico” se referirem a movimento, comércio, etc… O termo mais apropriado seria realmente “tráfego”. Concordo contigo, observação anotada!

Edilson Spessoto Data: 05/08/2006 às 7:57 pm

Atividade: Desenvolvedor/Gerente de Projetos

Cidade: são carlos

Este, além de outros artigos deste valoroso site, enquadra-se na categoria de ‘mais sem propósito, impossível’. Até onde eu sei, Delphi foi descontinuado e está à venda pela Borland, assim como as demais tecnologias da empresa…

Thiaguito Cez Data: 06/08/2006 às 8:46 am

Atividade:

Cidade:

Ótimo artigo.

Eduardo Moraes Data: 07/08/2006 às 8:52 am

Atividade:

Cidade: Curitiba

Prezado Edilson Spessoto,

Não sei em qual linguagem você programa, mas, segundo o IEES, Instituto de Estudos Econômicos em Software, Delphi é a linguagem de programação mais utilizada no Brasil, com 37,3% de indicações, contra 21,8% de VB e 11,4% de Java. Quanto à descontinuidade do Delphi há duas coisas a considerar. A marca Borland terá uma nova administração, isto é tudo até o momento, nenhuma notícia concreta quanto a descontinuidade, até mesmo por que o número de usuários de códigos Pascal é bastante expressivo. Outra questão é que linguagens uma vez estabelecidas no mercado não desaparecem simplesmente e nem são automaticamente migradas para outras tecnologias, como nos mostra o exemplo do COBOL, resistindo por décadas a cada novo modismo. O que temos é justamente o discutido neste e em outros valorosos artigos deste site, que é, no meu entender, de grande qualidade e utilidade não apenas para programadores, mas também para aqueles que trabalham tomando decisões em suas empresas quanto a área de informática, ou seja, a necessidade de continua adaptação, pesquisa e implementação nos códigos para sempre caminhar no sentido de uma melhor performance para o usuário final, e, portanto, para os negócios de qualquer empresa.

Outro ponto é que, apesar do artigo referir-se a Delphi, não há, como você pode ser facilmente notado, uma linha sequer de código Delphi nele, apenas os conceitos necessários de AJAZ para a sua implementação. Desta forma, o conteúdo do artigo pode facilmente ser aproveitado para ser utilizado em qualquer outra linguagem de programação, deixando-se de lado apenas as considerações que foram realizadas especificamente as características de desenvolvimento web em Delphi.

Espero ter trazido um pouco de luz as suas considerações, lembrando também que muitos sistemas continuam rodando nas mais diversas linguagens existentes, continuadas e descontinuadas, em versões antigas ou nos mais recentes “update packs”, e todas merecem a mesma consideração com relação a possibilidade de melhoria em seus códigos.

Eduardo Moraes Data: 07/08/2006 às 9:00 am

Atividade:

Cidade: Curitiba

*Correção: AJAX e não AJAZ.

Alexandre Data: 07/08/2006 às 11:02 am

Atividade:

Cidade: Blumenau

Concordo Eduardo,
E só acrescentando, a divisão de ferramentas de desenvolvimento será vendida porque a borland hoje pretende se focar em ALM, e isso pode representar um grande salto para o Delphi, C, JBuilder, já que hoje todo o faturamento da borland com essas ferramentas é distribuido entre todas as areas. Uma vez existindo uma empresa especifica para as ferramentas de desenvolvimento, esse dinheiro vai ficar ali e será destinado a melhorias nessas mesmas ferramentas.

[]’s.

Luis Fernando Barbosa Data: 08/08/2006 às 1:21 pm

Atividade: Webdesigner e Desenvolvedor Delphi

Cidade: Piracicaba

Prezado Eduardo; parabéns pelo excelente artigo. Gostaria de reiterar sua explanação sobre a possível descontinuação do Delphi dizendo que; a cada dia vemos mais e mais empresas, de médio e até grande porte utilizando aplicações desenvolvidas em Delphi para suportar atividades menores de processamento de dados, atividades que complementam sistemas de ERP, CRM e até Business Intelligence. Essa decisão decorre da facilidade de implementação, portabilidade e atualização oferecidas pelo Delphi. A junção de Ajax e Delphi vem com certeza atender aos anseios de muitos programadores que procuravam formas de disponibilizar aplicações Delphi no ambiente de intranets, com baixo custo de migração e ROI garantido.

Gerson Silveira Data: 08/08/2006 às 1:58 pm

Atividade: Designer Gráfico / Diretor de Arte

Cidade: Porto Alegre - RS

Excelente artigo professor Eduardo. Uma explanação concisa e satisfatória sobre o uso de AJAX. Estou procurando bibliografia sobre o assunto, poderia indicar alguns livros? Ficarei muito grato.

Grande Abraço

Gera

10° Edilson Spessoto Data: 11/08/2006 às 5:49 pm

Atividade:

Cidade: são carlos

Neste caso, o nome Delphi no título do artigo poderia ser facilmente suprimido, haja vista tratar-se de um artigo abordando essencialmente Ajax. Em miúdos, não é nem um artigo esclarecedor sobre Delphi, e não é nenhum artigo esclarecedor sobre AJAX, na medida que trata muito superficialmente de ambos.

11° Eduardo Moraes Data: 14/08/2006 às 8:18 am

Atividade: Programador e Professor

Cidade: Curitiba-PR

Prezado Spessoto,

O artigo é destinado, como o título indica, a programadores Delphi. Eu não preciso ensinar programadores Delphi a programarem em Delphi, o que preciso é falar sobre as possibilidades existentes, pois qualquer deles que já tenha desenvolvido para Internet saber fazer um Response.Content := ‘’; e todos os demais códigos necessários para implementar o que aqui fora explanado.

Trata-se, certamente, dos fundamentos necessários, a indicação das possibilidades são dadas a partir do artigo, que esclarece tais condições. Seu propósito fora atingido, como você pode constatar pelos agradecimentos. Não se trata de um curso completo sobre o assunto, e nem de um passo a passo detalhado sobre tudo o que precisa ser feito, pois de, tal forma, eu estaria desrespeitado aquilo que as empresas classificam como seu principal Capital, ou seja a intelectualidade de seus desenvolvedores.

Certamente, você deve concordar comigo que devemos respeito a estes e aqueles que se propoem a contribuir de alguma forma com o desenvolvimento destas potencialidades.

12° Yuri Alexandre Data: 15/08/2006 às 10:06 pm

Atividade:

Cidade: Rolândia - PR

Infelizmente vários comentários aqui postados estão sem propósito, ao contrário do conteúdo do artigo, que tem o propósito de chamar a atenção para as possibilidades de Delphi + Ajax.

Ninguém, a Borland inclusa, vai “acabar” com um produto que tem uma marca valiosa como o Delphi, rentável, com uma enorme comunidade de adeptos espalhados pelo mundo todo e que cumpre com sobras aos objetivos a que se propoe como produto de tecnologia.

Pessoas que não levam em consideração os fatos acima, provavelmente não tem uma visão ampla do mercado e precisam justificar suas escolhas tecnológicas simplesmente depreciando outras alternativas.

Sem querer levar adiante, o terceiro comentário acima utilizou-se do termo “até onde eu sei”, o que demonstra o desconhecimento dos fatos apresentados, portanto passível de desculpas.

13° Luis Miuel Tonelli Martins Data: 28/08/2006 às 8:08 am

Atividade:

Cidade:

Gostei muito do artigo, o que não gosto é este pessoal que só sabe desenvolver para a web criticar o delphi o tempo todo. Programo em delphi a quase 10 anos e em php a 3 e posso dizer que uma linguagem se enquadra melhor para uma situação. Nota-se que estas pessoas procuram se auto-afirmar desmerecendo linguagens que não conhecem e leventado a bandeira “posso fazer tudo que o delphi faz em php” o que não é verdade, pelo menos sem o triplo do trabalho, assim como programar em php tem várias vantagens em inúmeras situações quando comparadas com o object pascal. Não precisa ter uma “linguagem melhor”, são apenas diferentes e conhecer as duas é maravilhoso.

14° Rafael Data: 22/09/2006 às 1:26 am

Atividade:

Cidade:

Pensei que o artigo fosse sobre linguagem de programação Delphi para navegadores mas é um simples e manjado XMLHTTP.

Vocês devem criar títulos de artigos melhores.

15° Gustavo Data: 21/12/2006 às 3:26 pm

Atividade: Analista de Sistemas

Cidade: Curitiba

Ow Spessoto, não pira na batatinha meu. Se aproveitou o artigo blz, senão conseguiu visualizar a proposta, busca outra coisa no google, e vá ser feliz. Agora para um cara que se diz “Desenvolvedor/Gerente de Projetos”. Vc tem uma visão bem tapada das coisas, vc é do tipo técnico que se diz Desenvolvedor… Me desculpa ai pela falta de respeito, mas é apenas retribuição ao seu comportamento… Aí boa sorte e espero que vc conheça bem pelo penos o PMBOK. Pq desenvolvedor vc não heee, quando muito um copia código.
Falow e Seja feliz.

16° Bianca Data: 22/02/2007 às 1:09 pm

Atividade: Analista

Cidade: São Paulo

Eduardo Rodrigues de Moraes, Você está de Parabéns, é didático e simples em seus conteúdos.
Sabe o que mais me deixa triste quando entro em algum artigo? São os indivíduos que gostam de criticar e a falta de respeito dos mesmos com os articulistas. O que será que eles querem mostrar????

Bianca

17° Anderson Valério Data: 05/04/2007 às 3:51 pm

Atividade: Analista

Cidade: Macaé

Concordo com vc Bianca, alias em vez desta peça rara criticar o artigo, chamando-o de sem propósito, por que ele mesmo entaum não nos proporciona entaum vermos o que é um artigo bem feito, e melhor, feito por ele ?!?!?!?!?!?!

18° junior Data: 04/01/2008 às 10:07 am

Atividade: Analista

Cidade:

Edilson Spessoto,mais sem proposito foi o seu comentario….Se essa for sua visao, espero que o seu chefe nao veja isso, talvez vc seja demitido…um cara q nao tem visao nao pode ser gerente de projetos.

19° Alonso Jr Data: 17/03/2009 às 10:05 am

Atividade: Desenvolvedor Delphi

Cidade:

“…Delphi foi descontinuado e está a venda…”
Frase meio contraditória, não? Sabe o dia que o Delphi vai acabar? Quando todas as aplicações Delphi do mundo forem migradas pra outra linguagem.

20° Gerson Data: 28/07/2009 às 8:23 pm

Atividade: Consultor de TI/Analista de Sistemas

Cidade: Rio de Janeiro

Prezado Eduardo Moraes,
Parabéns pelo artigo, acho extremamente pertinente o assunto.
A uso da tecnologia Ájax traz um ganho sensível nos sistemas web. Além disso, os desenvolvedores cujo sua experiência profissional é mto focada em Delphi, em sua maioria, ainda experimentam o desenvolvimento web como uma coisa nova. Portanto, artigos como este, que demonstram alternativas e integração do Delphi com tecnologias fundamentalmente web podem ser de grande ajuda para muitos profissionais e estudantes.
A propósito, se me for permitido, gostaria de deixar registrado um artigo que escrevi sobre o mesmo tema, sendo que usei Ajax/Json sendo consumido por um aplicativo Delphi/Intraweb. A Url é : http://estacaozn.blogspot.com/2009/04/ajaxjson-delphi-technologies-webbrocker.html
Quem desejar ver mais um exemplo sobre a utilização de Ajax interagindo com um programa em Delphi poderá encontrar neste endereço.
Att,
Gerson Motta

Avisos
Os ítens com asterisco ( * ) são campos de preenchimento obrigatório.
Todos os links inseridos nos comentários possuem o atributo rel="nofollow" para impedir com que user agents (como os mecanismos de busca) sigam os links inseridos para desestimular spammers.
Todos devem se identificar através de e-mail válido.
Os e-mails dos usuários não serão divulgados no site.
Comentários:

Preencha os dados abaixo e clique em enviar

Webinsider