10 años de XMLHttpRequest


El objeto XMLHttpRequest (aka XHR) se emplea dentro del código javascript de las páginas web para realizar peticiones HTTP (asíncronas) y así obtener datos del servidor web desde el código cliente. Su nombre sugiere el formato de lo datos que se transfieren: XML, no obstante también puede ser HTML o cualquier formato de texto que se pueda enviar de forma estándar por HTTP, como por ejemplo JSON.

Antes de la existencia de XMLHttpRequest, todos los datos tenían que ser enviados junto con toda la página web (llevando a cabo lo que se conoce como post-back). Si se deseaba más información o nuevos datos del servidor web, se tenía que realizar la solicitud de otra página web (así fuera incluso dentro de un iframe) debido a que el código Javascript dentro de las páginas web no podía hablar con el mundo exterior. XMLHttpRequest vino a cambiar eso, permitiendo que las páginas web puedan obtener más datos del servidor cada vez que lo deseen directamente desde el código sin realizar post-back.

Antes y durante la existencia del XMLHttpRequest, Microsoft ha propuesto soluciones para lograr obtener datos del servidor sin post-back, entre ellas tenemos el Microsoft Remote Scripting (aka MSRS), el WebService Behaviour para IE (que de hecho empleaba XMLHTTP) y el ASP.NET 2.0 Script Callback. Así mismo existieron otras propuestas tales como el JavaScript Remote Scripting (aka JSRS) de Brent Ashley, entre otras. Ejemplos de ellos pueden verse en artículos como: Remote Scripting, WebService Behaviour, and Script Call Back.

La primera implementación y versión del objeto XMLHttpRequest: la interfaz COM IXMLHTTPRequest, se remonta al año 1999, cuando fue lanzado como parte del Microsoft Internet Explorer 5.0.

Su historia comienza un año antes, cuando el equipo del OWA for Exchange 2000, deseando superar problemas de escalabilidad y desempeño de la versión anterior (basada en ASP y MSRS), se encontraba ante a disyuntiva de elegir entre dos implementaciones para su nueva versión. Una era liviana basada en HTML estático y la otra en DHTML: HTML dinámico mediante JavaScript. Alex Hopmann se decidió por la segunda opción, la cual sin embargo seguía teniendo algunos problemas de escalabilidad y desempeño. Por ello se dio a la tarea de crear en ese fin de semana la primera versión del XMLHTTP que les permitió hablar WebDav/XML con Exchange 2000 de forma remota sin post-backs.

El OWA debía ser un cliente web sin ninguna instalación adicional (salvo IE) para uso, por lo que el requerir instalar un control ActiveX rompería dicha promesa. Por ello el siguiente paso fue el tratar de incluir el XMLHTTP dentro del Internet Explorer. Para ello Shawn Bracewell depuró y mejoró el código mientras que Alex Hopmann logró que el XMLHTTP fuese incluido dentro de la biblioteca MSXML, el analizador XML que se distribuye e integra al Internet Explorer.

Los detalles de la historia del origen del XMLHTTP se pueden leer en el artículo: The story of XMLHTTP, de mano del mismo Alex Hopmann.

Así nació la interfaz IXMLHTTPRequest. Para crear el objeto se utilizaba el id programático “MSXML2.XMLHTTP”, mismo que fue cambiando con el paso de las versiones. Dado que el XMLHTTP está basado en COM/ActiveX, puede usarse tanto desde el código script del Internet Explorer (JScript y VBScript) así como desde cualquier otro entorno de desarrollo que lo soporte (WSH, VB, VC++, Delphi, etc.). No obstante ello también excluye su uso en entornos, plataformas y web-browsers ajenos a ActiveX.

Es en el año 2002 cuando el proyecto Mozilla desarrolla la primera implementación nativa del XMLHTTP: el XMLHttpRequest, para su Mozilla 1.0 y el Netscape 7.0. Otros browsers, tales como Safari, Konqueror y Opera, entre otros, le siguieron el paso.

Fue entonces cuando se comenzó a proponer su uso por la red, incluso a pesar que los desarrolladores tuvieran que lidiar con las diferentes implementaciones del XMLHttpRequest. Esto se aprecia en artículos que van desde el mismo 2002 Using the XML HTTP Request object hasta Dynamic HTML and XML: The XMLHttpRequest Object (2004), entre muchos otros. Pero fue en 2005 cuando el afamando artículo ajax: a new approach to web applications repuntaría su uso bajo el acrónimo que todos conocemos.

El resto es historia conocida, gracias a la proliferación de bibliotecas javascript (que encapsulaban el tener que lidiar con las distintas implementaciones de XMLHttpRequest y otras tareas aledañas) y diversos frameworks "AJAX", se popularizó exponencialmente -a la vez que ocultó- el uso del XMLHttpRequest.

No fue extraño entonces que al siguiente año, el 5 de abril de 2006, el W3C presentara el primer borrador de trabajo para una especificación estándar del XMLHttpRequest con el fin que los desarrolladores ya no tuvieran que lidiar con las distintas implementaciones de los web-browsers (lo cual hizo que posteriormente Internet Explorer lo adoptara a partir de su versión 7.0) misma que fue evolucionando hasta su última versión que encontramos en: www.w3.org/TR/XMLHttpRequest.

Posteriormente en el año 2008 se publicaría el primer borrador del XMLHttpRequest2 (XMLHttpRequest Level 2) el cual presentaría algunas mejoras sobre XMLHttpRequest original, tales como: peticiones cross-site, eventos de progreso, y manejo de bytes. El último borrador se encuentra en: www.w3.org/TR/XMLHttpRequest2.

Con paso lento al principio, siendo poco explotado incluso por sus creadores, XMLHttpRequest fue ganando aceptación al ser adoptado por los distintos browsers así como popularidad gracias un acrónimo; finalmente llegó a ser una API estándar.

¡Felices 10 años XHR!

Referencias:

Acerca de Willy Mejia

Developer, Techie, Human... http://about.me/willyxoft
Esta entrada fue publicada en AJAX, Informática e Internet, opinión. Guarda el enlace permanente.

Una respuesta a 10 años de XMLHttpRequest

  1. Pakos dijo:

    Buen aporte.. ningún comentario O.o…. describes exactamente lo que esta detrás de ese termino “AJAX” que por desgracia como que muchas personas no entiende que es y lo que esta dentras de el… el bonito y hermoso XHR que para mi es como se deveria llamar a toda la proriferaciòn de acronimos (que como me caen TAM MAL ¬¬º). mi primera necesidad de una petición que no fuera un call-back la tuve en el 2004, la forma en lo que lo resolvi fue cargar htmls con scripts en un Iframe que estos script manipulaban el parent del iframe con JS, tenia que programar las funciones desde un PHP.. eso estubo super programar PHP para que su salida fueran script JS sintaticamente correcto eso estuvo loco y bastante enfermo! xP .. ese fue un efecto estupendo se modificaba mi pagina “magicamente” si un post back visible en la pagina principal el iframe lo ocultaba con display:none, .. ya un poco despues alguien a quien le mostre mi trabajo me dijo “aaaa ya estas utlizando AJAX” y yo “WTF is AJAX… O.o????”… noup.. solo utlizo JS que cargo en un iframe!.. total me di a la tare de investigar.. terminando de leer AJAX.. mmmm.. solo JS… !… un objeto de JS.. al cual por desgracia no le dan el estelar que se merece :(… pero felices 11 años…. y contando year++;

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s