Criar aplicações Web orientadas de forma assíncrona aka AJAX pode ser uma tarefa bastante difícil.
Quando utilizamos uma “AJAX pattern”, em vez de fazermos o refresh à página inteira, expomos “interfaces” no lado do servidor que nos permitem fazer o post e processar respostas de forma assíncrona, actualizando apenas algumas partes da página Web. Visto já existirem algumas .NET frameworks aka “Ajax engines” (as mais conhecidas são Ajax.net e My Ajax.net Library) que nos fazem este tipo de trabalho, podemos cair no erro de pensar que para criar uma “Rich Web Application” nos basta isso.
É claro que podemos utilizar uma framework para fazer uma simples página web assíncrona (AJAX) mas quanto mais nos tentarmos aproximar da criação de uma “Rich Web Application” mais complicado se torna. Uma coisa é carregar uma listbox de forma assíncrona, outra é criar um ambiente totalmente assíncrono, tipo google maps. Pois é, isto envolve uma complexidade de patterns e/ou metodologias para gerirem os recursos e ainda por cima em diferentes tipos de browsers. (só um aparte… as master pages do asp.net 2.0 permitem-nos criar diferentes masters para diferentes tipos de browsers mas… isso fica para outro post).
Por exemplo, se não existirem patterns para gerirem os recursos, o que irá acontecer se estiverem numa página (ex: galeria de fotos) a carregarem diversas imagens de uma forma assíncrona e de repente, no meio do processamento, quiserem consultar a página anterior, que também é gerida de forma assíncrona, do mesmo servidor, fazendo [back] no browser ? Pois é… a página ficará temporariamente bloqueada !!! Conclusão, teremos de criar uma pattern que faça a gestão dos processos de download ;p
Temos que ter em mente que um dos recursos mais dispendiosos para um browser é o download de um script. Se analisarmos o “load” de uma página web verificamos que quando é carregado um script, este é o único recurso a ser processado. Isto pode custar cerca de 10% a 15% do download de uma página.
Outro aspecto é a diferença de compatibilidade entre os diversos browsers… Ainda por cima a maioria dos programadores não utiliza nenhuma pattern e/ou metodologia quando está a trabalhar no ambiente JavaScript.
Actualmente, no meu entender, a pattern AJAX faz muito sentido em sistemas de administração de páginas web (Intranet e Internet) e para termos mais liberdade em ambientes (Intranets) em que normalmente só se utiliza um tipo de browser (IE). É claro que carregarmos uma listbox box numa página web (Internet) de uma forma assíncrona (AJAX), ou outros exemplos semelhantes, fica bonito e o utilizador terá uma experiência muito mais agradável. I like it :)
Uma coisa não temos dúvida e é fácil constatar, cada vez mais vemos páginas web a utilizarem a pattern AJAX. This is the next-generation ;p
A boa notícia é que o projecto Atlas da microsoft vem-nos facilitar a vida ;) Irá possuir ferramentas, frameworks e patterns para reduzir o custo e a complexidade da criação de páginas web (Ajax-enable). Mas será que chega ?
Nota: "Ajax is the most improved reincarnation of remote scripting" ;p
posted on Monday, August 22, 2005 7:06 AM