AJAX: El peligro de la magia

He estado leyendo esta noticia de javaHispano
en donde se habla sobre Backbase, y me ha hecho pensar en AJAX, y en
como puede ser problemático en determinados casos que explicaré a
continuación.


Antes de nada, me gustaría comentar que la demo de Backbase me ha
gustado muchísimo. Es genial ver todos esos efectos, hasta ahora
relegados al mundo del escritorio, ejecutándose en Firefox sin ningún
problema.


Desde luego, no hay una buzzword en estos meses que esté
sonando más que AJAX. El término AJAX ha aparecido de repente y ha
convertido las aplicaciones web tradicionales en RIAs (aplicaciones
ricas de Internet), incrementando la usabilidad de sus interfaces y
haciendo posible el uso de componentes hasta ahora relegados a otros
ámbitos. A pesar de que ya sabéis que era algo que existía hace tiempo,
lo cierto es que ha sido como un truco de magia, "ahora ves un pañuelo,
y ahora ves un conejo".


Pero ojo con la magia, porque siempre hay truco. Y eso es lo
que no se debe olvidar. Como sabéis, la clave en AJAX es esconder las
interacciones con el servidor, realizándolas en un modo asíncrono de
modo que el usuario no se entera de que están pasando cosas. Si a esto
le sumamos que el árbol DOM se actualiza dinámicamente, tenemos que se
solventa el problema de las molestas transiciones entre páginas. ¿Cuál
es el problema entonces, si todo es tan bonito?


El problema es que como en los trucos de magia, las cosas son de un
modo diferente al que se ve. Aunque el usuario no lo vea, por detrás se
siguen haciendo continuas llamadas a través de la red, como en las
aplicaciones web de siempre. El peligro, es que muchos desarrolladores
creo que no se están dando cuenta de esto, y están viendo a AJAX como
una solución a todos sus problemas, un nuevo paradigma de programación
que por fin ha solucionado los problemas de las aplicaciones web, y que
hará que todo y absolutamente todo sea web.


Pero señores. Cordura. La web no es
necesariamente el mejor lugar para las interfaces de usuario. Ni con
AJAX, ni sin AJAX. La web es un excepcional lugar para cierto tipo de
aplicaciones, sobre todo las que se han de distribuir a través de
Internet, las que necesitan un acceso masivo y heterogéneo de usuarios,
o para las aplicaciones que requieren una enorme ubicuidad. Y es que
tenemos ejemplos de aplicaciones web modelo de éxito como flickr,
amazon, las googles, y muchas más que se os ocurrirán...


Pero sin embargo, como decía en el párrafo anterior, hay muchos
casos en los que un interfaz web está abocado al fracaso. No voy a
entrar en las ventajas de las aplicaciones de escritorio frente a las
web, porque las tenéis en las transparencias que comentaba. En lugar de
esto lo que sí que voy a hacer es comentar un ejemplo , y que creo que es descriptivo de uno de los problemas más
importantes de las aplicaciones web, y más concretamente de AJAX. Este
problema es la necesidad de conexión de las aplicaciones web; y es un
problema de AJAX, justamente porque AJAX nos "esconde" esa necesidad,
nos "engaña" haciéndonos creer que tenemos todos los datos, y puede
hacer que los desarrolladores olviden que realmente las cosas no son
tan mágicas como parece. Muchos sabéis que trabajo en ámbitos
hospitalarios. Os voy a poner un ejemplo dentro de este mundillo:


En nuestro hospital hay muchas aplicaciones, entre las que como
comprenderéis hay algunas bastante críticas. Una de ellas es la de mi
amigo Ricardo, la de hemodinámica. Esta aplicación es utilizada por los
hemodinamistas para controlar a los pacientes que tratan. Así, cuando
un paciente por ejemplo va a ser operado, para que le hagan un
cateterismo por ejemplo, quizás por que haya sufrido algún infarto, los
hemodinamistas lo que harán será antes de nada abrir la ficha del
paciente y comprobar todos los datos: si ha tenido lesiones en las
arterias anteriormente, si se le han prácticado más cateterismos,
comprobarán los diferentes parámetros (creedme hay muchísimos) de otras
intervenciones realizadas sobre este paciente, etc. Si todo está
correcto, el paciente entra en la sala y se procede a realizar la
intervencion.


Ahora bien. Imaginaros que los hemodinamistas están ya
operando al paciente, y que de repente el responsable de la operación
ve un problema y necesita corroborar algunos datos. Entonces, ordenará
a alguno de los asistentes que vaya al ordenador a localizar los datos
que necesita. El asistente se acerca al ordenador, y recorre las
diferentes solapas de la aplicación recolectando los datos sensibles.
Una vez los va leyendo, se los va comentando al hemodinamista jefe, y
la operación continua. Si hay suerte, el paciente saldrá adelante, y
habrá un nuevo éxito.


Pénsemos en lo que podría pasar con un aplicación web con
AJAX. Desde el punto de vista del usuario, aparentemente todo es lo
mismo. A fin de cuentas, es lo que promete AJAX, mejores componentes
gráficos y transparencia en el acceso a datos. Sin embargo, la realidad
es otra. En este caso, la aplicación necesita estar conectada continuamente
a un servidor. ¿Qué sucede si en el momento en el que se necesitan los
datos se cae la red?, ¿y si se cae la base de datos?, ¿y si se estropea
el cable de red?, ¿y si se cae el servidor de aplicaciones?, ¿y si
algún técnico de sistemas se equivoca y desconecta un switch? ¿y si...?
En fin, yo creo que se os pueden ocurrir decenas y decenas de posibles
problemas que ya hemos vivido. En el caso anterior, no podría pasar
nada de esto, porque los cientos y cientos de datos ya están
precargados, y los hemodinamistas los tienen a su disposición. Sí, es
cierto que pueden pasar otras cosas, pero por lo menos hemos minimizado
enormemente el riesgo.


Ese es el peligro que yo le veo a AJAX y que nadie comenta. Todo es
muy bonito, todo es muy fantástico, todo es muy drag and drop y muy
desplegable, pero por debajo todo sigue igual, y conviene no olvidarlo,
y si no, poneros en el pellejo de la persona del caso anterior.


En ámbitos hospitalarios este tipo de casos pasan mucho. Y en otro
tipo de ámbitos también. Normalmente las aplicaciones que pueden
requerir el tratar muchos datos que ya han sido cargados, y permitir el
trabajo con ellos, están destinadas al escritorio. Esto es simplemente
porque es el mejor lugar para estas aplicaciones. Las aplicaciones web
tienen su sitio. Por ejemplo, el sistema de citas de nuestro servicio
de salud es un sistema web, cosa que es absolutamente lógica, y que es
un ejemplo de un buen lugar para un interfaz de usuario web.


Bueno creo que he soltado un buen rollo, ¿no?. Así que no sigo más.
En resumen: señores, cordura y precaución con lo que usamos, lo que
escogemos, y para qué lo escogemos. Que no todo es tan bonito como
parece, y que no existe la tecnología "única", sino muchas tecnologías
que están ahí para que las utilicemos cuando realmente se necesitan.

November 04, 2007 by Juan

Posted in Framework | 1 Comments » Menéame Google Bookmarks Fresqui Del.icio.us Del.icio.us Yahoo! My Web icon facebook icon Reddit enchilame

Prototype, jQuery y otros

La popularidad de muchas aplicaciones basadas en Ajax ha renovado el
interés en DOM scripting, la manipulación del modelo de objetos de un
documento XML (y una página web XHTML es un documento XML) usando un
lenguaje de programación, por lo general Javascript.

[Read More]

August 31, 2007 by Juan

Posted in Framework | 0 Comments » Menéame Google Bookmarks Fresqui Del.icio.us Del.icio.us Yahoo! My Web icon facebook icon Reddit enchilame

AJAX un nuevo acercamiento a Aplicaciones Web

Hace un tiempo AJAX parece ser la palabra de moda en el “mundo” del desarrollo de aplicaciones Web; de hecho muchos lo escuchan nombrar pero pocos saben que es realmente y, menos aún, saben en donde buscar información clara sobre que es esta nueva “maravilla” de la tecnología que Jesse James Garret publicó en un artículo en Inglés excelente que vale la pena traducir por completo.[Read More]

August 22, 2007 by Cornelio Hopmann

Posted in General | 0 Comments » Menéame Google Bookmarks Fresqui Del.icio.us Del.icio.us Yahoo! My Web icon facebook icon Reddit enchilame