Dise˜no, desarrollo e implementación de pureAJAX, un

Transcripción

Dise˜no, desarrollo e implementación de pureAJAX, un
Diseño, desarrollo e implementación de pureAJAX,
un framework AJAX compacto y eficiente.
Edgar Esteban Maidana Peña1 , Roberto Alfredo Demestri Rigoni2
Facultad Politécnica - UNE.
Ciudad del Este - Paraguay
1 [email protected] 2 [email protected]
Resumen
El presente trabajo se halla enmarcado dentro del área de tecnologı́as Web, especı́ficamente
en el área de aplicaciones ası́ncronas. La evolución de la Web en los últimos años, supuso
cambios, tanto en aspectos técnicos, como en la forma de interacción de usuarios con los sitios
Web. Esto ha impulsado la Web 2.0, caracterizada por la reinvención de técnicas de desarrollo, implicando esencialmente, pasar del modelo de comunicación sı́ncrono al ası́ncrono; las
tecnologı́as involucradas en este segundo modelo se agrupan bajo la denominación de AJAX.
pureAJAX es un framework desarrollado a fin de responder a las necesidades comunes en
el desarrollo de aplicaciones AJAX, compatible con todos los navegadores Web, siendo a la
vez compacto y funcional.
Descriptores: pureAJAX, JavaScript, framework, comunicación ası́ncrona.
Abstract
This work is framed within the area of Web technologies, specifically in the area of asynchronous applications. The Web evolution in recent years, marked by changes in both the
technical aspects, as in the form of user interaction with websites. This has led to Web 2.0,
characterized by the reinvention of development techniques, involving essentially moving
from synchronous communication model to the asynchronous one; the technologies involved
in this second model are grouped under the term AJAX. pureAJAX is a framework developed to meet the common needs in the development of AJAX applications, compatible with
all Web browsers, being both compact and functional.
Keywords: pureAJAX, JavaScript, framework, asynchronous communication.
1. Introducción.
La comunicación ası́ncrona permite al navegador Web realizar llamadas HTTP al servidor en
segundo plano, sin interrumpir la interacción del
usuario con el sitio Web. Estas llamadas ası́ncronas se realizan a través del objeto XMLHttpRequest, presente en todos los navegadores Web modernos [1].
La utilización comunicaciones ası́ncronas es
posible gracias a la unión de las tecnologı́as
webHTML para la capa de presentación, DOM para la interacción dinámica con la página HTML,
XMLHttpRequest como canal de comunicación,
XML utilizado como formato de transferencia de
datos, y JavaScript como nexo de unión de todas
las anteriores; todos ellos agrupados bajo la denominación de AJAX [2].
La utilización de la técnica AJAX requiere una
estricta secuencia de comandos y numerosos con-
troles, que resultan tediosos sin la utilización de un
framework que se encargue de las tareas de las acciones y controles de bajo nivel [1]. Los frameworks
JavaScript disponibles en la actualidad, cuentan
con un motor AJAX que posibilita la realización
de llamadas ası́ncronas, ası́ como manejadores de
eventos, selectores HTML, gestión de animaciones y efectos, entre otros. En primera instancia,
esta alternativa resulta conveniente, pero cuando
se presenta una situación en la que únicamente se
necesita un motor AJAX, el tamaño excesivo de e
stos frameworks JavaScript hace que la utilización
de estos resulte inapropiado para proyectos Web
móviles o aplicaciones Web en donde la velocidad
de carga constituye un factor crı́tico.
2. Objetivos.
− Crear un framework AJAX que contemple
todas las necesidades esenciales en el desa-
Diseño, desarrollo e implementación de pureAJAX, un framework AJAX compacto y eficiente.
rrollo de aplicaciones Web 2.0.
− Lograr que el tamaño del archivo fuente del
framework sea de menos de 12 KB.
− Lograr que el framework desarrollado sea
compatible con las versiones más recientes
de todos los navegadores Web que soportan
JavaScript.
− Desarrollar el framework de manera que la
integración de widgets o funciones especı́ficas resulten amigables.
− Crear toda la documentación relativa al framework .
− Verificar y validar el algoritmo creado mediante pruebas pre- establecidas
3. Framework.
Un framework es una estructura conceptual y
tecnológica de soporte definida normalmente con
artefactos o módulos de software concretos, con
base en la cual otro proyecto de software puede
ser organizado y desarrollado. Tı́picamente, puede incluir soporte de programas, bibliotecas y un
lenguaje interpretado entre otros programas para
ayudar a desarrollar y unir los diferentes componentes de un proyecto [3]. Son diseñados con la
intención de facilitar el desarrollo de software, permitiendo a los diseñadores y programadores pasar
más tiempo identificando requerimientos de software que tratando con los tediosos detalles de bajo
nivel para ası́ proveer un sistema funcional.
4. pureAJAX
Framework escrito completamente en el lenguaje JavaScript. Cuenta con un núcleo principal
(core), el cual es extendido a través del prototipado para la inclusión de los métodos adicionales, asimismo cuenta con extensiones del lenguaje JavaScript y funciones auxiliares que brindan
agilidad y consistencia al acceder a los datos. La
principal diferencia entre pureAJAX y los frameworks citados previamente, es la inclusión de funciones especı́ficas para la realización de llamadas
ası́ncronas junto con el tratamiento de la respuesta del servidor. Entre las funciones especı́ficas se
encuentran los métodos:
− Load(): que carga contenido ası́ncrono en el
elemento especificado.
− Select(): que actualiza el contenido de un elemento select (comboBox).
− Run(): ejecuta una llamada ası́ncrona y ejecuta la respuesta como código JavaScript.
− Value(): asigna la respuesta del servidor a
un campo de texto.
− SendForm(): envı́a los datos del formulario
indicado usando las configuraciones del propio formulario, pero utilizando una llamada
AJAX.
En todos estos métodos se pueden especificar
las acciones (a través de funciones JavaScript) que
será ejecutadas una vez finalizado el tratamiento
de la respuesta del servidor.
3.1 Framework AJAX
Constituye una librerı́a de funciones que ayudan a desarrollar aplicaciones Web basad as en
el concepto AJAX. La información es leı́da desde
el servidor o enviada a éste a través de peticiones JavaScript. Sin embargo, es requerido algún
procesamiento del lado del servidor para manejar
peticiones, por ejemplo, para buscar o guardar información [1].
Esto es alcanzado más fácilmente con el uso
de un framework dedicado a procesar peticiones
AJAX. El motor AJAX pretende reducir la espera
para el usuario cuando una página trata de acceder al servidor. La meta del framework es proveer
este motor AJAX y funciones asociadas al servidor
y del lado del cliente [6]. Existe actualmente, una
gran variedad de frameworks JavaScript/AJAX,
cada uno con caracterı́sticas y propósitos distintos.
Entre los más utilizados se encuentran Prototype,
jQuery, Dojo y MooTools [4].
4.1 Métodos de pureAJAX
El framework pureAJAX se compone de una
clase principal que contiene la lógica básica para la
realización de las conexiones, junto con los atributos o propiedades. Un detalle importante concerniente a la instanciación del objeto XMLHttpRequest radica en que, la forma de hacerlo puede var
iar de un navegador a otro, o incluso en diferentes
versiones de un mismo navegador. En JavaScript,
una clase se define como una función, y la única diferencia se encuentra en la forma en que se
invoca a éstos; pues para instanciar una clase, se
antepone la palabra reservada “new” al nombre
de la función [7]. Todas las llamadas AJAX realizadas en pureAJAX pasan a través de un método
genérico denominado Request. Se puede utilizar
de forma indirecta a través de métodos especı́ficos
como Run, Load, Select, etc.; o directamente para
realizar una llamada personalizada.
20
Diseño, desarrollo e implementación de pureAJAX, un framework AJAX compacto y eficiente.
4.1.1 Método Request
4.1.6 Método Value
En él se crea un manejador del evento “onreadystatechange” del objeto XMLHttpRequest.
Requiere de un único parámetro en notación
JSON, el cual contendrá las configuraciones de la
llamada AJAX; mı́nimamente debe contener:
Realiza una llamada AJAX y asigna la respuesta del servidor a la propiedad “value” del campo
de texto cuyo atributo Id es pasado por parámetro.
− url: indica la dirección del documento a donde apuntará la llamada AJAX.
− method: método de envı́o de la llamada
(POST o GET).
4.1.7 Método Select
Actualiza las opciones de un campo tipo select
(comboBox) a través de una llamada AJAX cuya respuesta de l servidor debe ser un documento
XML válido.
− onOK: función que será ejecutada cuando se
reciba la respuesta.
4.1.8 Método Run
− async: true si es una llamada ası́ncrona, caso
contrario false.
Realiza una llamada AJAX cuya respuesta del
servidor lo ejecuta como código JavaScript.
Podrı́a suceder que el parámetro recibido en el
método Request no contenga las configuraciones
mı́nimas necesarias para realizar la llamada. Para
solventar ese inconveniente, se verifica el argumento recibido en Request con el método Default cuya función es agregar las configuraciones mı́nimas,
ası́ como las cabeceras POST si correspondiere.
4.1.2 Método Default
A grega las configuraciones mı́nimas, ası́ como
las cabeceras POST si correspondiere. Recibe un
único argumento en notación JSON que contiene
la configuración de la llamada que será realizada,
en caso de que faltare alguna configuración obligatoria, lo agrega y retorna el argumento de entrada
modificado.
4.1.3 Método Update
Procesa los datos recibidos cuando la propiedad readyState del objeto AJAX cambie a 4 (completado). Por este método pasan las respuestas de
todos los métodos especı́ficos de pureAJAX que
realizan llamadas AJAX, excepto Img.
4.1.4 Método Load
Permite realizar la carga de contenido
ası́ncrono, que lu ego es asignado al contenido
HTML del elemento al cual pertenece el Id especificado en el parámetro de la llamada. Este método realiza una llamada AJAX a través del método
genérico Request.
4.1.9 Método Loader
Gestiona la visualización de la capa indicadora
de llamadas AJAX cuando el Id del elemento sea
especificado.
4.1.10 Método CSS
Obtiene o asigna un atributo CSS del elemento HTML cuyo Id se pasa por parámetro. Si se
especifica sólo el Id y el atributo CSS, el método
retorna el valor de dicho Atributo. Si además se
especifica un valor, el método asigna ese valor al
atributo CSS del elemento especificado.
4.1.11 Método Img
Realiza la carga de una imagen en segundo
plano; y una vez finalizada la carga, ésta es asignada al elemento HTML cuyo Id se especifica en
los parámetros. Esta función no utiliza la pasarela XMLHttpRequest, pues por tratarse de una
imagen (datos binarios) no es posible realizar el
transporte vı́a AJAX. En contrapartida, los elementos HTML “img” ya poseen controladores de
carga ası́ncrona de manera nativa.
4.2 Variables auxiliares
Contienen información referente a la identificación navegador del cliente. También se definen algunos alias a propiedades extensas de mucho uso.
4.1.5 Método SendForm
Permite efectuar en envı́o de un formulario a
través de una llamada AJAX. La URL y el método utilizado corresponden a la propia configuración del formulario. Se utiliza la función Serialize() para formar la cadena de variables y valores
correspondiente al formulario.
5. Pruebas Realizadas
Se han ejecutado varios procedimientos, de
manera a explorar las capacidades del pureAJAX,
en cuanto a su funcionamiento y eficiencia. Básicamente se desglosa en cuatro aspectos, detallados
a continuación:
21
Diseño, desarrollo e implementación de pureAJAX, un framework AJAX compacto y eficiente.
5.1 Tamaño final de archivo
Se refiere al archivo que contiene el código
fuente del framework pureAJAX, siendo clasificada en tres categorı́as de acuerdo al tipo de compresión utilizado. Las variaciones de tamaños verificados, con los resultados obtenidos son:
− Normal: corresponde al archivo del código
fuente original sin ninguna compresión; éste
posee extensión “.js”. El framework pureAJAX tiene 11,0 KB de tamaño normal.
Tabla 2. Tiempo de carga de los frameworks.
− Miniaturizado: corresponde al archivo del
código fuente original del cual son suprimidos los espacios innecesarios, las tabulaciones y los saltos de lı́nea; éste posee extensión “.js”, conteniendo en esta categorı́a el
tamaño, 6,51 KB.
De los resultados obtenidos, básicamente es
posible afirmar que el framework pureAJAX utiliza menos tiempo para la carga de una llamada
al archivo fuente original, en comparación que los
demás frameworks AJAX.
− Miniaturizado y comprimido: corresponde al
archivo miniaturizado al cual se aplica una
compresión en el formato gZIP; la extensión
del archivo es “.js.gz”. El pureAJAX contiene 2,34 KB en esta categorı́a.
5.2.1 Tiempo de carga desde servidores
remotos
En este mismo punto, se realizó una comparación, en relación a los otros frameworks mencionados anteriormente, obteniendo los siguientes
resultados:
En este aspecto, se han ejecutado varias llamadas desde servidores remotos, con los mismos
frameworks utilizados en puntos anteriores, obteniendo los siguientes resultados como promedio de
las mencionadas llamadas, expresados en milisegundos.
Tabla 1. Comparación de tamaños entre frameworks.
Del resultado obtenido, se deduce que el pureAJAX tiene tamaño significativamente inferior
a los demás frameworks, lo que mayor agilidad al
realizar el tráfico desde el servidor Web hasta el
cliente (navegador Web).
5.2 Mediciones de tiempo de carga
Consiste en la realización de una llamada del
archivo fuente original de los frameworks pureAJAX, Dojo, jQuery, MooTools y Prototype. Al realizar la llamada, se marca el tiempo de inicio y final
de la solicitud a fin de obtener el tiempo transcurrido desde el inicio de la llamada hasta la carga
completa del framework.
Los resultados obtenidos en esta prueba son
reflejados en la Tabla 2.
Tabla 3. Tiempo de carga de los frameworks desde
servidores remotos.
Los resultados obtenidos, permiten afirmar que
el pureAJAX, utiliza en promedio, entre 5 y 6 veces menos tiempo en la velocidad de carga, desde
servidores remotos.
5.2.2 Tiempo de carga desde servidores
locales
Para medir este aspecto, se ha un utilizado las
mismas técnicas y scripts utilizados para las pruebas en servidores remotos, cuyos resultados expresados en promedio son reflejados en la Tabla 4.
22
Diseño, desarrollo e implementación de pureAJAX, un framework AJAX compacto y eficiente.
Tabla 4. Tiempo de carga de los frameworks desde
servidores locales.
Al igual que lo sucedido en las pruebas realizadas desde servidores remotos, las realizadas desde
servidores locales reflejan que pureAJAX se carga, en promedio, 6 veces más rápido que los demás
frameworks.
Tabla 7. Tiempo medio utilizado para seleccionar elementos en Mac OS X 10.6, expresado en milisegundos.
El rendimiento de pureAJAX, como el de los
demás frameworks, es estable en todos los navegadores Web de las tres plataformas incluidas en el
análisis. Es oportuno destacar que, el pureAJAX,
a pesar de tener un tamaño mucho menor al de
los demás frameworks, no pierde en eficiencia ni
rendimiento.
5.4 Compatibilidad para navegadores
5.3 Desempeño en la selección de
elementos HTML
Se evaluó la selección de los elementos HTML
definidos por los selectores “body”, “div”, “body
div”, “div p”, “div, p, a”, “span”, “h1” y “p” utilizando cada uno de los cinco frameworks en su
propio ambiente de ejecución. Se ha utilizado la
herramienta SlickSpeed creada por el equipo de
desarrollo de MooTools, disponible gratuitamente
desde la Web del autor [5]. Los tiempos (expresados en milisegundos) son acumulados, ejecutándose en tres sistemas operativos: Ubuntu 11.04 x86,
Windows 7 x64, Mac OS X 10.6 x64; y los resultados finales son expuestos en las siguientes tablas:
La compatibilidad para con los navegadores
del framework pureAJAX, al ejecutarse la evaluación de desempeño en l a selección de elementos
HTML, se pudo verificar igualmente que, es totalmente funcional y compatible para los navegadores siguientes:
− Safari 4+
− Internet Explorer 6+
− Mozilla Firefox 3.6+
− Google Chrome 14.0+
− Opera 9.0+
− Opera Mobile 10+
Cada uno de estos navegadores, opera sobre
plataformas o sistemas operativos con los cuales
son compatibles.
6. Conclusiones
Tabla 5. Tiempo medio utilizado para seleccionar elementos en Ubuntu 10.11, expresado en milisegundos.
El framework pureAJAX posee una serie de
caracterı́sticas convenientes como lo son el tamaño reducido (tan sólo 2,3420 KB), especialización de tareas, eficiencia en la ejecución de llamadas AJAX y facilidad de uso. Los logros obtenidos,
pueden deducirse en 3 aspectos: la extensibilidad
de la clase principal, tiempo de carga reducido,
y la compatibilidad con los distintos navegadores,
en las correspondientes plataformas.
6.1 Extensibilidad
Tabla 6. Tiempo medio utilizado para seleccionar elementos en Windows 7, expresado en milisegundos.
El diseño modular de pureAJAX, facilita la extensión de la clase principal a fin de agregar futuras funcionalidades, sin necesidad de cambios sustanciales en el código ya existente.
23
Diseño, desarrollo e implementación de pureAJAX, un framework AJAX compacto y eficiente.
6.2 Velocidad de carga
Los resultados de las pruebas realizadas demostraron que pureAJAX se carga, tanto desde
servidor local como desde el servidor remoto, en
prome dio, 6 veces más rápido que los demás frameworks analizados, en el presente trabajo. Si se
considera el hecho de que la carga de los archivos
JavaScript se realiza de forma sı́ncrona, se puede
afirmar que esta ganancia en la velocidad de carga
contribuye al mejoramiento de la experiencia del
usuario, especialmente en dispositivos móviles en
donde aún predominan las conexiones que brindan
un reducido ancho de banda.
EE.UU.; 2007. 627 p. ISBN: 0977762203.
[2] Garrett, Jesse James, AJAX: A New Approach to Web Applications. [En lı́nea]
http://adaptivepath.com/ideas/essays/
archives/000385.php [08-02-2011].
[3] DocForge: Framework. [En lı́nea] http://
docforge.com/wiki/Framework [27-06-2011].
[4] Internet and Blogging Resources: 9 Most
Popular Ajax Frameworks. [En lı́nea]
http://ebiznet2u.com/9-most-popularajax-frameworks-1855/ [25-06-2011].
6.3 Compatibilidad con los navegadores
En las pruebas realizadas con una gran variedad de navegadores Web en las tres plataformas de
escritorio predominantes (Windows, Linux, MAC
OS X) y plataformas móviles como iOS, Android,
BlackBerry y Symbian; el framework pureAJAX,
ha arrojado resultados satisfactorios en los tópicos
velocidad de carga, funcionamiento y eficiencia.
Referencias bibliográficas
[1] Hinchcliffe D,Allen K: Real - World AJAX,
Secrets of the Masters. SYS - CON Media.
[5] MooTools, A compact JavaScript Framework:
SlickSpeed Selectors Test. [En lı́nea] http://
mootools.net/slickspeed/ [15-10-2011].
[6] Ullman C, Dykes L: Beginning Ajax. John Wiley & Sons. Reino Unido: West Sussex; 2007.
498 p. ISBN: 978-0-470-10675-4.
[7] Flanagan, David: JavaScript, The Definitive
Guide (5ta ed.). O’Reilly & Associates. O’Reilly
Media Inc.. EE.UU.; 2006. 1032 p. ISBN: 0-59610199-6.
24

Documentos relacionados