Saltar al contenido

Artículos, tutoriales, trucos, curiosidades, reflexiones y links sobre programación web ASP.NET Core, MVC, Blazor, SignalR, Entity Framework, C#, Azure, Javascript... y lo que venga ;)

17 años online

el blog de José M. Aguilar

Inicio El autor Contactar

Artículos, tutoriales, trucos, curiosidades, reflexiones y links sobre programación web
ASP.NET Core, MVC, Blazor, SignalR, Entity Framework, C#, Azure, Javascript...

¡Microsoft MVP!
domingo, 8 de julio de 2007
Uno, que es inocente por naturaleza, asume que utilizar AJAX, acrónimo cuyas siglas corresponden con Asynchronous Javascript And XML, implica el uso de Javascript, comunicación asíncrona con el servidor y XML como formato de intercambio de información.

Lo primero es absolutamente cierto. Javascript es la base actual de AJAX; sin duda es el lenguaje de moda para la programación de funcionalidades avanzadas en cliente, está relativamente bien soportado por los navegadores modernos (o al menos son bien conocidas las particularidades de cada browser) y ofrece una potencia más que suficiente para lo que habitualmente pretendemos utilizarlo.

Lo segundo, la comunicación asíncrona con el servidor, es sólo relativamente cierto. Además de ser posible y útil la comuncación síncrona, hoy en día el término AJAX se utiliza con demasiada frecuencia; basta hacer una web tenga algún script para asegurar que estamos usando esa tecnología punta. Y no, señores, que los menús dinámicos ya se hacían con DHTML hace muuchos muuuchos años.

Sin embargo, hay librerías y frameworks AJAX que, entre otras características, incluyen funciones con efectos visuales realmente espectaculares, y esto cala muy rápidamente en los usuarios y desarrolladores al ser realmente sencillos de integrar y utilizar. De hecho, es fácil encontrar aplicaciones que utilizan de forma masiva estos componentes y no utilizan intercambio de datos alguno con el servidor.

Y por último, la gran decepción: no tiene por qué usarse XML. Lo que parecía tan obvio (de hecho, en un nuevo alarde de ignorancia y osadía lo aseguré en el post Llamar a servicios web con ASP.NET AJAX paso a paso), no es así la mayoría de las veces, y me explico.

XML, a pesar de su estandarización, interoperabilidad y claridad de lectura es lento a la hora de ser procesado. Si habéis probado a manejar un documento complejo usando XMLDOM o similares, habréis comprobado lo engorroso y lento que resulta recorrer o crear la estructura y acceder a sus elementos. Y claro, si se utiliza este lenguaje para comunicar cliente con servidor se supone que esta complejidad se produce en ambos extremos del intercambio de datos, lo cual no resulta agradable ni a la hora de desarrollarlo ni una vez puesto en explotación, puesto que se pretende que este intercambio sea rápido.

En su lugar se suelen utilizar formatos más ligeros, fácilmente procesables y manejables tanto desde cliente como desde servidor, y aquí la estrella es JSON (JavaScript Object Notation), un formato ligero para el intercambio de información basado, como XML, en texto plano, muy estructurado, de fácil lectura, con una gran difusión y, sobre todo, muy fácil de procesar tanto desde Javascript como desde software en servidor. Una prueba de su popularidad es que el propio Yahoo! adoptó JSON como formato de intercambio de datos con sus servicios, aunque sigue permitiendo XML.

Sin embargo, como siempre que existen distintas opciones para hacer lo mismo, hay un fuerte debate sobre la conveniencia de usar XML o JSON, con continuas luchas entre uno y otro bando en las que se aportan las ventajas de utilizar una opción y las debilidades de la opuesta. Vamos, lo de siempre (Windows/Linux, Internet Explorer/Firefox, PlayStation/Xbox, Burger King/Mc Donnald's...).

Como curiosidad, decir que se ha llegado a acuñar el término AJAJ para identificar a la tecnología que combina el Javascript Asíncrono con JSON (de ahí la "J" final), pero es obvio que el término no es tan atractivo como AJAX y ha sido descartado. Además, el uso de otros formatos de intercambios podría dar lugar a extrañas variaciones de las siglas que inundarían el ya colmado espacio mental reservado para estas aberraciones. Por ejemplo, si en vez de XML usamos HTML, la tecnología debería llamarse AJAH; si la complementamos con CSS podría ser AJACH; si usamos también comunicación síncrona necesitaríamos SAJACH. Y así hasta el infinito y más allá.

Por ello, y esto sí que es importante, parece que existe finalmente un gran consenso respecto a la utilización del término Ajax (mayúsculas la inicial, minúscula el resto), de forma que deje de ser un acrónimo y se convierta en un nombre propio que identifique a la filosofía, no al conjunto de tecnologías que se usan por debajo. Esto, además, supone un giro radical en su definición: mientras que AJAX es un término centrado en la tecnología, Ajax está centrado en el usuario, en lo que ve, en lo que obtiene, en su forma de relacionarse con el sistema, relegando los aspectos tecnológicos a un segundo plano.

Por cierto, otro día dedicaré un post en exclusiva a JSON, que creo que es lo suficientemente interesante como para dedicarle un ratito.

10 Comentarios:

Anónimo dijo...

Estoy completamente de acuerdo en la conclusión final. El término Ajax ya no hay que verlo con como el resultado del empleo de un conjunto de tecnologías, sino como una "filosofía", una nueva forma de desarrollar aplicaciones Web.

Anónimo dijo...

Vamos a ver. Lo del XML no se refieres a que el intercambio de datos se haga en XML, sino que para la comunicación entre cliente y servidor se utiliza el objeto XMLHttpRequest que viene de series en todos los navegadores modernos.
¿Sino como narices se comunican entre ellos?

Anónimo dijo...

Creo que te equivocas (Anónimo), es cierto que clave de Ajax es el objeto XMLHttpRequest. Pero la tan famosa X no se refiere a este objeto, sino al XML.

Anónimo dijo...

Coño! lo que te estoy diciendo EL OBJETO XML, que es el que contiene el XMLHttpRequest, que viene de serie en todos los navegadores.
Lo que si que estas equivocado es en el tratamiento del xml. La tecnologia Ajax no trabajo con datos en XML, devuelve simples cadenas de texto, otra cosa es que algunos devuelvan XML.
Mirate cualquier libreria de Ajax y lo veras.

josé M. Aguilar dijo...

Hola.

Mario, gracias por tus comentarios. Como tú, opino que Ajax va mucho más allá que una tecnología, es una filosofía destinada a modificar la forma en que los usuarios se relacionan con sistemas basados en web.

Anónimo, tienes razón en recalcar la importancia del XMLHttpRequest puesto es la vía utilizada para la comunicación dado que este interfaz se implementa en prácticamente todos los navegadores. Sin embargo, Ajax, tal y como la definió inicialmente su creador Jesse James Garret en 1995, incluía (cito textualmente): "The name is shorthand for Asynchronous JavaScript + XML". O sea, que la X viene de XML.

Por ahí, tema zanjado.

Eso sí, su popularización posterior ha dado lugar al uso de técnicas más eficientes para el intercambio de datos, como el texto plano, HTML o JSON.

Anónimo dijo...

Vaya entonces no soy el unico con la loca idea que AJAX no es AJAX

http://necudeco.homeunix.net/index.php/2007/04/05/ajax-o-ajaj/

josé M. Aguilar dijo...

Necudeco, efectivamente... y a la vista de los hechos, no es ninguna loca idea, creo que el concepto Ajax va mucho más allá de AJAX tal y como fue enunciado en sus comienzos.

Robert Alexander dijo...

además porque ajax es el nombre de un desinfectante basado en Cloro, no sé si lo sabías chico listo

Anónimo dijo...

Al final tiene razon anonimo, se utiliza el control XMLHttpRequest y siempre lo que recibe es texto, si de ahi tu quieres recibir TEXTO CON SINTAXIS xml, lo parseas y tal.
Lo de AJAJ es una tontera, se le haya ocurrido a quien sea sigue siendo una tontera.

El nombre AJAX esta perfecto, no le den vueltas a esto que es perder el tiempo.

fito dijo...

pues a mi me parece eso, una filosofía, aunque no es tan fácil digerirlo en este mundo plagado de siglas, acrónimos y demás condimentos.

Aparte lo de JSON me parece interesante, si Y! lo ha implementado entonces no ha de ser algo tan malo, Y! con JSON y Google con Python, a ver cuando migran a .net y nos contratan :-D

Ajax también es el nombre de un producto de limpieza, así que entonces podemos usar Ajax para limpiar nuestro código Ajax y dejarlo lo mejor posible jejeje.

Un saludo, interesante artículo.