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