AJAX?
Artículos 26 Septiembre, 2006
Muchos de nosotros ya hemos escuchado hablar de Ajax (Claramente no me refiero al equipo de futbol Holandés), me refiero a esa nueva forma de navegar por sitios, con una interactividad que más parece un CD-ROM o un sitio flash que un sitio en “HTML”.
Mucha gente cree que se trata de algo nuevo, que es tecnología desarrollada por los genios programadores de Google, la verdad es distinta, Ajax (Asynchronous JavaScript And XML) es sólo una recapitulación e integración de tecnologías que ya existían, cómo el Javascript o el XML (obviamente con la ayuda de CSS para la aplicación de diseño de la página) en su base, por lo tanto, no es una nueva tecnología sino una técnica de desarrollo de aplicaciones web interactivas, su funcionamiento se basa en que delega la responsabilidad de administración de datos a un motor de Ajax residente en el computador del usuario en cada sesión con la aplicación y no al servidor, esto inmediatamente significa que el usuario no tiene la obligación de esperar que cargue la página cada vez que hace un click, sino que va cargando las partes de la aplicación en su propio equipo en forma asincrónica en modo background (no necesariamente como respuesta a un click del usuario) y comienza a activarlas o a verlas en la medida que él va usando la aplicación.
El motor de ajax, por otra parte, se encarga de solicitar información de forma más optimizada al servidor, es así como cuando navegamos un sitio creado en Ajax somos capaces de mover o reagrupar cosas, realmente esto no está ocurriendo en el servidor, sólo es una representación que ocurre en mi equipo gracias a que esta técnica trabaja en función de objetos, no de páginas.
Ajax apareció fuertemente en escena gracias a los genios programadores de Google con proyectos cómo: Gmail, GoogleMaps o GoogleSuggest, hoy es cada vez más utilizada para la gestión de campos de una base de datos en forma más didáctica, es así como no sería raro ver aplicaciones de administradores de contenidos, agendas, formularios de cotización o incluso administradores de blog (cómo en el que me encuentro escribiendo ahora) que permitan al usuario sentirse como si estuviera trabajando con una aplicación en CD más que con un formulario web.
Ejemplos:
Recuperación asíncrona de datos, si está bien usado, el usuario no tiene que esperar después de una petición.
Acercamiento de la metáfora de escritorio a la web. (al ser más parecido a como funciona windows (cuando windows funciona))
No requiere plugins. (pero si tener activado JavaScript)
Se reduce el tamaño de la información intercambiada. (aunque no siempre, algunos desarrolladores están experimentando con la descarga de contenidos por adelantado, suponiendo que el usuario va a ver ese contenido)
Desventajas y precauciones
Técnicas
a) Pueden aumentar las llamadas al servidor.
En vez de hacer peticiones únicas por página, se hacen múltiples peticiones en forma asincrónica.
b) Uso excesivo de Javascript: - seguridad,- compatibilidad,- accesibilidad,+ complejidad.
c) Debido a su naturaleza asincrónica se hace mas propenso a pérdidas de seguridad en datos o información importante del usuario
d) Qué pasa si la aplicación está siendo usada por varios usuarios a la vez? los datos son cargados en la base de datos de forma asincrónica por lo que es posible que existan ciertas incongruencias en la base de datos en un momento específico
e) En AJAX es el computador del usuario quien está haciendo el trabajo duro, por lo tanto hay que tener mucho cuidado con la cantidad de códigos o procesos simultáneos ya que aunque la aplicación puede no pesar mucho, puede necesitar de un gran computador para ser estable y rápida
f) Las paginas con AJAX que tienen gran cantidad de texto son más dificiles de indexar por los motores de búsqueda, lo que dificulta su aparición en los primeros lugares.
g) trackeo mas dificil de errores, en AJAX (como ya sabemos) las páginas se generan dinámicamente en el computador del usuario por lo que es mucho mas dificil llevar un registro de problemas en el diseño de la interfaz ya que no se generan logs de lo que está pasando realmente en el computador del usuario
Desventajas y precauciones
De Usabilidad
a) Peligro de incompatibilidades en navegadores.
Actualmente el 10% de los computadores del mundo no tiene activado JavaScript, lo que imposibilita el funcionamiento de esta técnica.
b) Se rompe el flujo de navegación tradicional (botón “volver” y “actualizar”).
c) La percepción de cambio es menor
Indicar al usuario que ha habido un cambio o que se va a producir (”cargando …”)
d) Mantener el funcionamiento tradicional de los formularios
No enviar los datos al servidor hasta que el usuario lo solicite.
e) No mostrar evidentemente el progreso o cambio en una pagina
Debido a que los cambios en ajax no son de una página a la otra (sino que de cambian partes dentro de la misma página) se debe tener muy en cuenta la necesidad de darle al usuario luces claras de que está cambiando algo o que ya ha cambiado.
f) Es imposible su funcionamiento offline
Si el sitio es decargado por el usuario con el fin de consultarlo sin la necesidad de estar conectado a internet, este no funciona si está montado en AJAX
g) Se debe tener un plan alternativo para los usuarios que no tienen activado su motor de JavaScript
h) Se debe tener el cuidado de hacer que la aplicación (en partes claves) tenga URLs que puedan ser guardadas cómo favorito o ser enviadas a un amigo (esto dado que por defecto AJAX trabaja con una sóla página a la que le va cambiando los datos para presentar en pantalla
i) En ciertas situaciones, ajax puede necesitar mover “automágicamente” nuestro scroll vertical, lo que puede resultar en una confusión importante para nuestros usuarios (recordemos que no necesariamente, él está pendiente sólo de nuestra página)
j) No intentar crear nuevos “estándares” de interación con la interfaz, es fácil “engolosinarse” y hacer, por ejemplo, divs flotantes arrastrables que no aportan en nada en la facilidad de uso y de “aprendizaje” de una interfaz web. la máxima en esto es preguntarse en cada decisión, es esto un real aporte a la interfaz o sólo lo estoy haciendo porque sé y puedo?
Según Sebadog, (un amigo que trabaja como “consultor en usabilidad” que ha participado del diseño de interfaces ajax) hay una serie de puntos a tener en cuenta al momento de enfrentarse a este tipo de proyectos, entre los que destacan están:
- Es más difícil de Diseñar
- No es que no se pueda, sólo que lleva más tiempo hacerlo
- Es más difícil de explicar
- Los wireframes y los mapas de navegación ya no son suficientes
- Es más difícil de programar
- Es complicado decidir que procesos se haran de parte del servidor y cuales en el computador del usuario
- Ajax es una palabra demasiado fácil
- Si le llamáramos a Ajax como corresponde (XMLHttpRequest) más personas le tendrían respeto
- Las herramientas hay que usarlas cuando ameriten
- No tenemos para qué cargar toda una caja de herramientas si sólo necesitamos clavar 1 clavo.
Conclusiones
Ok, ya conocemos de que se trata esto, Ajax es una técnica que puede ser muy útil para algunas cosas, mientras los desarrolladores empiecen a entender que Ajax no es un juguete (cómo lo fué Flash en su momento) y empiecen a entender que es una herramienta más (poderosa, pero a veces innecesaria) tendremos que acostumbrarnos a verlo en cuanto sitio de la web 2.0 se nos ponga por delante, a veces bien utilizado, otras no tanto.
Debido a que Ajax es un cambio en la forma en que la web funciona, es un cambio que debe ser hecho con mucho cuidado, recordemos que los usuarios agradecen cierta uniformidad en la forma de recorrer páginas en internet, si llegamos y le ponemos frente a él una nueva forma de navegar, con nuevas leyes, con nuevas lógicas, terminaremos por confundirlo y finalmente perdiéndolo como usuario.
Bueno la tarea no es fácil amigos, la próxima vez que alguien les diga, oye hagamos este proyecto en Ajax, piénsenlo 2 veces, no vaya ser cosa que terminen por desperdiciar una tremenda cantidad de dinero (que es lo que hoy en día cuesta integrar Ajax en aplicaciones web) cuando podrían haber hecho lo mismo (o mejor) con simples páginas php del lado del servidor y no del usuario.
Ok amigos de Digilicious, les cedo la palabra, perdonen lo extenso del post (uno sabe cuando empieza, pero cuando uno se larga.. no para)
Fuentes:


Marzo 12th, 2009 at 8:10
[...] herramienta del tampón (muy buena); una muy completa guía acerca del sistema de programación en AJAX; y un interesante artículo acerca del diseño gráfico en un movimiento estudiantil chileno en el [...]
Noviembre 21st, 2008 at 0:21
Excelente post, incluí algunas cosas en mi tesis
gracias
Septiembre 4th, 2008 at 14:03
MUY BUENO!!
Julio 23rd, 2007 at 5:03
[...] Todos sabem que com Ajax é possível dar maior interatividade a seu site, mas hoje em dia, vejo muitos sites abusarem desse conceito e transformarem uma simples Interface em um ambiente pirotécnico, que com um pouco de bom senso poderia ser evitado. Desenvolvedores começam um projeto novo e já não vem a hora de usar Ajax aqui, Ajax alí, acabam utilizando pra tudo, onde um simples HTML daria conta do recado, é por isso que muitos desenvolvedores hojem, ao invés de progredir, tem somente a regredir. Isso e muito mais informações você pode conferir no site Digilicious. [...]
Mayo 22nd, 2007 at 21:35
Buen articulo, Felicitaciones.-
Marzo 19th, 2007 at 1:17
[...] Esta semana les traigo Snipshot, una aplicación 2.0 integramente desarrollada en Ajax que permite editar imágenes, si, como Photoshop (pero muuucho más básico y gratis) aplicaciones de edición de imágenes hay varias, algunas bastante buenas, la revista mouse de la tercera estuvo mostrando algunas.[...]
Marzo 2nd, 2007 at 19:46
[...] Hace ya algún tiempo les estuve contando acerca de AJAX, entre otras cosas les comenté que no era un lenguaje ni una tecnología en si, sino una forma de afrontar la IGU utilizando Javascript, XML y CSS. Hoy les traigo algo que si bien tiene mucho que ver con AJAX es bastante distinto, se trata de Ruby on Rails. [...]
Febrero 19th, 2007 at 0:35
[...] Ajax introduce todo un mundo en posibilidades de navegación que estan siendo cada día mas explotadas en los sitios 2.0 (hablamos algo de ajax en este post), el diseñador debe estar al tanto de las posibilidad que le entrega esta “tecnología” para poder ofrecer la mejor solución posible. [...]
Febrero 7th, 2007 at 16:40
Gracias MAD !!!….Muy interesante articulo, no tenía ni idea de la nueva orientacion de la web, respecto a los javascript, yo los aplico para ciertas funcionalidades interactivas que no posee el html…, respecto a Ajax, se supone que debiera mejorar aún más esa funcionalidad, pero queda mucho por observar…de acuerdo a los comentarios de Mad, no se si esta madura esta tecnología.
Excelentes los enlaces a wiki.
Septiembre 27th, 2006 at 22:45
Aja… x… xcelente me parece el post… no tenía idea acerca de esta cosilla, todos los días se aprende algo nuevo. Lo que había escuchado por ahí es que creo que la NASA (o una entidad astronómica) había generado un sistema para que los usuarios descargaran pequeños paquetes a su computador y analizaran la info para reenviarla a sus servidores y contribuir al estudio del espacio… tendrá algo que ver con esto?
O quizás “my ass is on fire”…
Bueno, les dejo la inquietud.
Congrats again!.
Salu2
Septiembre 27th, 2006 at 10:23
Estimado MAD:
Felicitaciones por este notable post.
Creo que este es el nivel que debiamos mantener en los post. Por la novedad del tema, por la profundidad del trabajo e investigación, etc
Si lo logramos, ¡Grande DGlicious!!
Voy a informarme y tratar de experimentar con esta nueva técnica.
Septiembre 26th, 2006 at 23:57
Este Post significó mucho esfuerzo, horas y horas de investigación y de redacción (demoré semanas), apreciaría mucho si se toman la molestia de votar este post (una vez léido) y luego dejar un comentario, gracias.