Atenção: por essa edição ser muito antiga não há arquivo pdf para download desta revista. os artigos disponíveis somente em doc.
Delphi + Aiax.NET
Otimizando o tráfego HTTP com chamadas assíncronas e
Callbacks
Conforme já foi dito em outros artigos da ClubeDelphi, para desenvolver para Web é necessário quebrar paradigmas. Um deles é que um WebForm (ASP.NET) é limitado e não possui tantos recursos quanto um formulário tradicional (TForm da VCL). Ajax surge como uma opção para enriquecer as interfaces via Web e melhorar a usabilidade das páginas, deixando-as mais responsivas.
O funcionamento do protocolo HTTP é chamado de request/response, isto é, a cada ação do usuário (dique por ex.), uma requisição é enviada ao servidor e após uma espera, outra página HTML é devolvida ao browser (ou seja, há refresh total da página). Esse ciclo "dique, espera, atualiza página" é demorado, consome banda
e é pouco eficiente. E se pudéssemos atualizar apenas as partes da página onde de fato houve modificações? Ajax faz isso e também permite que o usuário continue interagindo com a página enquanto uma requisição paralela está em andamento.
Neste artigo veremos como são implementadas requisições síncronas e assíncronas usando a biblioteca Ajax. NET e como as páginas podem ser atualizadas sem efetuar postback (execução do método Submit do formulário da página).
Uma roupagem nova para tecnologias já conhecidas |
O termo Ajax foi cunhado por Jesse James Garrett da empresa Adaptive Path (www.adaptivepath.com), mas o objeto XmlHttp Requestjá existia no Internet Explorer desde sua versão 5 como um componente ActiveX. Outros browsers já possuem uma implementação nativa desse objeto.
Ajax.Net |
No lado cliente uma função JavaScript cria um objeto XMLHTTP Request e faz uma
Requisição de dados ao servidor. No lado servidor um HttpHandler recebe a requisição, chama um dos métodos marcados com o atributo [AjaxMethodAttribute] e serializa o objeto de retorno usando JSON (JavaScript Object Notation). No cliente, a string JSON é transformada novamente em objeto, a função de callback é chamada e alguma parte da página é atualizada. Isso acontece de maneira transparente para o usuário.
Neste artigo, para ver como o Ajax funciona na prática, vamos criar uma aplicação simples com dois controles HtmlTextBox,onde iremos digitar no primeiro controle e uma descrição aparecerá no segundo.
Adicionando Ajax.dll ao projeto |
Editando o Web.Config |
type="Ajax.PageHand1erFactory,
Figura 1. Ilustração de uma solução Ajax baseada na imagem obtida de
www.adaptivepath.com
Figura 2. Adição de ajax.dll ao projeto
A seção httpHandlers do web.config permite configurar mapeamentos entre as requisições HTML e as classes do projeto que implementam a interface IHttpHandler. No exemplo anterior estamos definindo que todas as requisições de arquivos .ashx feitas através dos métodos POST ou GET serão tratadas pela classe Ajax. PageHandlerFactory. Para exemplificar, pode-se fazer uma analogia
entre HttpHandlers e as associações de extensões de arquivos no Windows Explorer, onde cada extensão é aberta por um programa específico.A pasta ajax informada no atributo path não existe fisicamente e serve apenas para evitar conflito com outros HttpHandlers que possam existir na aplicação.
Programação no lado Servidor |
Ajax.Utility.RegisterTypeForAjax(typeof(TMebForm1));
Essa função vai inserir as seguintes linhas no HTML em tempo de execução:
...