Desmistificando o AJAX – Parte II

Raphael Paiva

raphael@sena.com.br

 

A arquitetura do AJAX

AJAX(Asynchronous Javascript And XML) modifica um pouco a arquitetura das aplicações atuais.

 

Enquanto as aplicações clássicas tinham seqüência de troca de informações totalmente síncrona, AJAX, por default tem uma seqüência assíncrona, porém esta pode ser configurada para ser síncrona como será explicado depois.

 

desmajaxrpfig01.jpg

Figura 1. Comparativo entre a arquitetura clássica e a AJAX

 

Agora com o AJAX é possível termos um centralizador/controlador de requisições e respostas, implementando assim o padrão MVC-2 e possibilitando uma melhor manutenibilidade do sistema. Mas a frente estaremos exemplificando.

 

Sincronismo X Assincronismo

A diferença entre requisições síncronas e assíncronas é quando se espera receber a resposta.

 

Num modelo síncrono das aplicações clássicas, temos chamadas e respostas seqüenciais, ou seja, é necessário recebermos a resposta da requisição anterior antes que passemos para a próxima requisição. Este tipo de modelo é o usado na arquitetura clássica, onde, caso precise chamar o servidor, é preciso realizar um refresh da página, e na página atualizada (ou na próxima página) receber a resposta.

 

A ilustração a seguir descreve a diferença dos modelos:


desmajaxrpfig02.jpg

Figura 2. Demonstração de modelo síncrono e assíncrono

 

No AJAX podemos utilizar ambos os modelos dependendo da necessidade, e em ambos os casos, não precisamos nem sequer realizar refresh da página.

 

Por exemplo, imagine que estamos num cadastro de usuário e, desejamos procurar pela cidade de acordo com o CEP informado; para este caso podemos utilizar o modelo assíncrono, pois não é de grande importância que essa informação chegue para que outras sejam executadas, assim, outras lógicas e métodos podem estar rodando em paralelo. Com o modelo assíncrono, no momento em que a resposta chegar ao cliente, será disparado um método que irá tratar e utilizar as informações retornadas do servidor.

 

Imagine agora, que na mesma tela de cadastro de usuário queremos verificar a idade deste usuário que apenas informou a data de nascimento; caso o usuário for maior de 18 anos, podemos habilitar algumas informações e campos na tela, caso menor, não deve mostrar; para este caso podemos utilizar o modelo síncrono; pois é crucial que o usuário de 18 anos preencha ou verifique tais dados antes de clicar em ‘salvar’. Com o modelo síncrono, ao chamar o método que se deseja, a aplicação cliente fica aguardando receber a resposta do servidor, e só executa os demais métodos depois deste ter retornado.

 

Atenção: Deve-se utilizar o modelo síncrono apenas em um caso de real necessidade, pois caso o servidor nunca responda, a aplicação cliente ficará “travada” até que se dê um time-out.