Ajax: Uma Nova Abordagem para Aplicações Web

Propaganda
Ajax: Uma Nova Abordagem para Aplicações Web.
Se algo do atual projeto de interação pode ser considerado glamuroso, é a criação de
aplicações web. Qual foi a ultima vez que você ouviu alguém discutir sobre modelo de
interação que não fosse para web? Certo, sem levar em consideração o Ipod. Todos os
novos e inovadores projetos são on-line.
Deixando isto de lado, os projetistas de interação para web não podem evitar de sentir uma
pequena inveja dos colegas que projetam aplicações para desktop. As aplicações desktop
possuem uma riqueza e resposta que parecia fora do alcance das aplicações web. A mesma
simplicidade que promoveu uma imensa proliferação da Internet também criou uma brecha
entre a experiência que podemos prover e a experiência que eles podem obtém através de
uma aplicação desktop.
Esta brecha esta fechando. De uma olhada no Goggle Suggest, veja como os termos vão
sendo sugeridos e atualizados a medida que você vai digitando, praticamente instantâneo.
Agora veja o Google Maps. De um zoom. Use o cursor para “agarrar” o mapa e navegue
um pouco. Novamente tudo ocorre instantaneamente, sem a necessidade de esperar pelo
reload da página.
Google Suggest e Google Maps são dois exemplos desta nova abordagem para aplicações
web, que nós na Adaptive Path estamos chamando de Ajax. O nome é um acrônimo para
Asynchronous javaScript + XML, e isto representa numa mudança fundamental no que é
possível se fazer na web.
Definindo Ajax
Ajax não é uma tecnologia. É realmente um conjunto de tecnologias, cada uma florescendo
por seu próprio mérito, trabalhando juntas em poderosas novas maneiras.
Ajax incorpora:





Camada de apresentação baseada em padrões usando XHML e CSS;
Apresentação e interatividade dinâmica usando Document Object Model;
Troca e manipulação de dados utilizando XML e XSTL;
Recuperação de dados assíncrona usando XMLHttpRequest;
E JavaScript unindo tudo isto.
O modelo clássico de aplicação web funciona desta forma: A maioria das ações do usuário
em uma página dispara uma requisição HTTP para o servidor web. O servidor realiza
algum processamento – recupera dados, realiza cálculos, interage com outros sistemas
legados – e então retorna uma página HTML para o cliente. Este é um modelo adaptado
para o uso da web como meio hiper-textual. Mas o que torna a web boa para hipertexto, não
necessariamente a torna boa para o desenvolvimento de aplicações.
Figura 1: O modelo tradicional para aplicações web (esquerda) e o modelo Ajax (direita)
Esta abordagem tem muito sentido a nível tecnológico, mas não muito para uma grande
experiência com o usuário. Enquanto o servidor esta fazendo o seu trabalho, o que o
usuário esta fazendo? Isto mesmo, esperando! E em cada nova interação o usuário espera
mais e mais.
Obviamente, se tivéssemos criado a Internet desde o inicio com o objetivo de criar
aplicações, não faríamos os usuários esperarem. Uma vez a tela carregada, porque o
processo de interação com o usuário deve ser interrompido cada vez que se necessita de
informações do servidor? De fato, porque o usuário deve ver a aplicação indo ao servidor a
todo momento?
Como Ajax é diferente
Uma aplicação Ajax elimina com a natureza inicia-pára-inicia-pára da interação na web,
introduzindo um intermediador – uma engine Ajax – entre o usuário e o servidor. Podemos
pensar que adicionar uma camada a mais tornará a aplicação menos responsiva, mas ocorre
exatamente o contrário.
Ao invés de carregar uma pagina no inicio de uma sessão, o navegador carrega um engine
Ajax – escrito em JavaScript e na maioria das vezes escondido em um hidden frame. Esta
engine é responsável por renderizar a interface que o usuário vê e intermediar a interação
entre o usuário e o servidor. A engine Ajax permite que a interação do usuário com o
servidor ocorra de forma assíncrona (independentemente da conexão como servidor).
Assim o usuário nunca irá ver uma pagina em branco no navegador, ou um ícone de uma
ampulheta, esperando até que o servidor faça algo.
Figura 2: O padrão de interação síncrona de uma aplicação web tradicional (acima) comparado com o
padrão de interação assíncrona de uma aplicação Ájax.
Cada ação do usuário que geralmente geraria uma requisição HTTP toma a forma de uma
chamada JavaScript à engine Ájax. Qualquer resposta a uma ação do usuário que não
necessite voltar até o servidor, como uma simples validação de dados, editar algo em
memória ou apenas incluir algo a mais na navegação, a engine fará. Se a engine necessitar
algo do servidor para responder, seja enviando dados para processamento, carregar código
adicional, ou recuperando novos dados, ela fará o pedido ao servidor de forma assíncrona,
geralmente usando XML, sem ter que parar a interação do usuário com a aplicação.
Quem está usando Ajax
O Google esta investindo pesado em aplicações Ajax. Todos os grandes produtos do
Google que foram lançados no último ano, Orkut, Gmail, Google Suggest, Google Maps,
Google Groups, são aplicações Ajax. Outros estão seguindo a tendência, muitas das
funções que todos amamos no Flickr dependem de Ájax, o engine de busca da Amazon
A9.com aplica as mesmas tecnologias.
Estes projetos demonstram que Ajax não é somente importante em termos técnicos, mas
também é viável em aplicações reais. As aplicações Ajax podem ser de qualquer tamanho,
desde as muito simples, simples funções como o Google Suggest, até aplicações complexas
e sofisticadas como o Google Maps.
Na Adaptive Path estamos trabalhando com Ajax nos últimos meses, e estamos
descobrindo que só raspamos a superfície da interação e resposta que as aplicações Ajax
podem nos prover. Ájax é um avanço importante para as aplicações web, e sua importância
só tem a crescer. E como existem muitos desenvolvedores que já dominam estas
tecnologias, esperamos ver mais empresas e organizações, a exemplo do Google
explorando esta vantagem competitiva que Ajax prove.
Olhando o futuro
Os maiores desafios ao criar aplicações Ajax não são as técnicas. As tecnologias centrais
estão maduras, estáveis e bem conhecidas. Contudo, os desafios estão nas mãos dos
projetistas destas aplicações, em esquecer tudo o que sabemos sobre as limitações do que se
é ou não possível fazer na web, e imaginar um raio muito mais amplo e rico de
possibilidades.
Jesse James Garrett, February 18, 2005
http://adaptivepath.com/publications/essays/archives/000385.php
Download