Terça-feira, 30 de setembro de 2008 às 11h00

Vantagens e Desvantagens do uso de AJAX - Aspectos Práticos

Faltam -1 dias! Inscreva-se agora! O maior encontro de profissionais web da américa latina.

Olá a todos. Esse artigo foi muito solicitado após a publicação do artigo anterior (http://imasters.uol.com.br/artigo/9903/ajax/vantagens_e_desvantagens_no_uso_de_ajax/) e oferece uma abordagem mais prática ao tema.

O AJAX é uma das tecnologias atuais mais polêmicas em relação ao seu uso, pois cada desenvolvedor possui sua forma de aplicação, seu framework preferido e forma de desenvolvimento.

Com isso, temos os infinitos itens de vantagens e desvantagens de seu uso prático.

Nesse artigo tentarei explicar alguns desses itens.

Existem inúmeras linguagens de programação distintas e cada uma com sua característica própria que a deixa melhor ou pior que outras linguagens em relação a um requisito de software. Com o AJAX não é diferente, pois o JavaScript, que é a linguagem por trás dela, tem muita coisa que podemos analisar.

Como vantagens práticas do seu uso, temos as seguintes:

Aumento significativo na velocidade do site - Quando estamos buscando apenas dados do servidor e atualizando apenas a uma parte específica do site, estamos economizando significativamente a banda utilizada do servidor, ainda mais quando temos um layout complexo e com muitas imagens.

Melhor experiência do usuário - Um site projetado com os diversos recursos oferecidos pelo AJAX é um site rico, pois o AJAX explora muito bem os recursos que o browser disponibiliza, já que o JavaScript é uma linguagem client-side (lado do cliente).

Flexibilidade para escolha da linguagem server-side (lado do servidor) - Não podemos deixar de citar essa importante característica, pois é uma grande vantagem também. Com o AJAX temos total liberdade de escolha sobre que tecnologia utilizar para a regra de negócios do projeto. Por exemplo podemos usar Java ou PHP, entre outras linguagens, para manipulação do banco de dados e posterior entrega de dados para o JavaScript tratar.

E como principais desvantagens práticas temos:

  • Utilização de um framework às vezes impossibilita a utilização de outro - A existência de inúmeros frameworks para desenvolvimento com AJAX é interessante, mas precisamos ter cuidado com incompatibilidades entre dois frameworks distintos. Por exemplo, se estamos usando o JQuery como framework, temos o símbolo cifrão ($) para manipulação do DOM, o que a Prototype também usa. Ou seja, se colocamos os dois na mesma aplicação, ficariam em conflito. É certo que temos maneiras de contornar isso, mas sabemos que seria uma gambiarra para esse problema específico, sendo que o mais certo é um estudo aprofundado sobre os principais frameworks para a escolha de um que satisfaça os requisitos do projeto.
  • Botões de "avançar" e "voltar" do navegador - Esse certamente é um grande desafio quanto ao uso. Quando usamos AJAX para o sistema inteiro, estamos criando um aplicativo (diferentemente do modelo de páginas antigo), muito parecido com aplicativos desktop, ou seja, todo o sistema será manipulado pelos eventos dos elementos, como o clique em um link ou o mouseover em uma imagem, mas isso sem o redirecionamento a cada ação, então quando o usuário do site aperta um dos botões de navegação (voltar e avançar), não voltará ao ´conteúdo´ visitado anteriormente, mas sim à página visitada anteriormente.
  • Para solucionar isso podemos utilizar alguns frameworks como o JQuery que possuem ferramentas úteis para a manipulação de históricos de páginas. Ou seja, a cada evento ocorrido na mudança de conteúdo ele automaticamente adiciona um "momento" no histórico. Logo, quando o usuário aperta os botões de navegação voltará exatamente onde quer. Outra opção é criarmos sistemas com links comuns para sistemas em AJAX, por exemplo um link home e um link empresa, cada um apontando para o respectivo aplicativo AJAX. Isso faz com que alguns históricos sejam pulados mas o usuário se mantém dentro do contexto do sistema. Essa é a abordagem da maioria dos sistemas AJAX, até mesmo aplicações como Gmail, ou Google Docs.

  • Não possuir um padrão de codificação - Como disse no início do artigo, cada linguagem possui suas características. Mas sempre é bom compararmos o que há de melhor nas outras linguagens, então, como um comparativo iremos usar o Java. O Java possui uma convenção de nomenclatura, que é usada por toda a comunidade e ajuda na reutilização de código, tanto por terceiros como na própria organização que fez. Isso é uma boa prática a ser seguida, não apenas com o JavaScript do AJAX, mas com muitas outras linguagens, pois facilita muito na manutenção e na distribuição de códigos.

Esses são os principais itens sobre a abordagem prática e já são suficientes para a reflexão e entendimento do uso do AJAX que é uma tecnologia muito profunda, pode ser complexa quando não utilizada corretamente, mas se utilizada com o planejamento devido, rende e muito no desenvolvimento de sistemas.

14 comentários

Gostei do seu post

O seu post está bem legal, parabéns!

Sobre utilização de vários plugins, concordo que devemos tomar cuidado, vários frameworks utilizam o "$" como chamada. Expecificamente o seu exemplo existe uma saida bem simples. A utilização do "$" é incondicional para o PrototypeJS, mas para o jQuery não (se a variavel "$" já estiver sendo utilizada ele não a substitui). Nesse caso, você pode incluir primeiro o PrototypeJS depois o jQuery. (nesse caso o jQuery seria chapado apenas jQuery(...))

[]'s
Luiz Paulo

 Alantiel Freire Marins
30/09/2008 15h37

Obrigado

Que bom que gostou.
Boa observação em relação ao $, por isso mesmo que precisamos entender bem o framework que iremos usar, para não termos supresas desagradáveis depois...
[]s
Alantiel Freire Marins

 Carlos Sá
30/09/2008 16h39

Legal

Gostei, muito bom...

Eu, particularmente, utilizo ajax no braço mesmo, evito o uso de frameworks, acho q muito gente torce o nariz pra esse detalhe.
Com relação aos botões de avançar e voltar do browser tb concordo, pois o usuario comum ja ta com esse costume q adquiriu antes da WEB 2.0, no caso de um sistema o ideal seria uma breve e suscinta explanação a respeito do uso do sistema, mesmo assim ainda teremos problemas...

 Alantiel Freire Marins
30/09/2008 17h09

Obrigado

Uma questão interessante é: usar ou não frameworks... para isso não há regras, depende do tamanho do projeto, de tempo utilizado no desenvolvimento e, é claro, de gosto.
[]s
Alantiel Freire Marins

 Igor Escobar
01/10/2008 09h18

...

Só para constar, AJAX é uma técnica, e não uma técnologia.

 Alantiel Freire Marins
01/10/2008 09h47

...

Exatamente, no artigo explico isso melhor

 Alantiel Freire Marins
01/10/2008 09h50

ops

coriijindo a mensagem anterior...
no artigo anterior expliquei isso melhor..

 Raphael França Marques
01/10/2008 09h57

Como fazer?

Você cita:
"Para solucionar isso podemos utilizar alguns frameworks como o JQuery que possuem ferramentas úteis para a manipulação de históricos de páginas. Ou seja, a cada evento ocorrido na mudança de conteúdo ele automaticamente adiciona um "momento" no histórico."

Onde posso achar tutoriais sobre esta manipulação de histórico? alguma sugestão?

 Danilo Augusto
01/10/2008 10h58

O Yahoo! eliminou uma desvantagem

Com a biblioteca de interface do Yahoo! é possível trabalhar com ajax e flash e poder "avançar" e "voltar" no navegador, salvar nos favoritos, etc.

[]s

 Alantiel Freire Marins
01/10/2008 11h26

@Raphael

Estou fazendo exatamente esse artigo, até a semana que vem (espero) postarei aqui no iMasters...
Existem algumas bibliotecas como a citada pelo Danilo (do Yahoo!) que auxiliam, irei mostrar a do JQuery, que acho mais simples...
Aguardem...

 Raphael França Marques
15/10/2008 13h51

@Alantiel

Otimo saber, eu ia perguntar exatamente se tinha como fazer com jquery, que acho bem mais prático.
Ficarei no aguardo Alantiel :D

 Alantiel Freire Marins
15/10/2008 13h57

olá

Olá Raphel,
O artigo já foi enviado, nessa semana será publicado...

 Daniel Castro Machado
18/11/2008 22h46

Outras desvantagens

Existe outras desvantagens do uso do Ajax:
1.) Para o programador: A lógica do desenvolvimento fica um pouco mais complexa.
2.) Para o usuário: O link não necessariamente corresponde ao estado atual da página. Se o cara quiser fazer um bookmark ou enviar algo que achou interessante para um amigo pode haver problemas pois o link aponta para o último redirecionamento feito.

 Alantiel Freire Marins
19/11/2008 09h19

Outras desvantagens

Olá Daniel,
Creio que para o primeiro item citado, o uso de frameworks facilitam bastante, claro que hoje em dia as aplicaçõe estão ficando cada vez mais robustas, e isso também do lado do servidor, então de qualquer forma tende a ser mais complexa.
Para resolver o segundo item, existem formas de fazer a leitura de querystring com o javascript, a partir daí podemos criar uma lógica para direcionar o usuário apartir da url acessada, é bem mais custoso, mas as vezes é necessário.
Obrigado pelo comentário.

Cancelar resposta

Qual a sua opinião?

Faça login abaixo ou cadastre-se rapidamente.


Patrocínio:
Sobre o Autor
Alantiel Freire Marins é Desenvolvedor Web há mais de 4 anos, representante da Fatec Zona Sul na maratona brasileira de programação por dois anos consecutivos. Estudante de Algoritmos e Estrutura de dados, atualmente é webmaster do UOL.

2001 - iMasters FFPA Informática Ltda - Todos os direitos reservados.