Ingeniería Del Software II: AJAX Vs Silverlight
Total Page:16
File Type:pdf, Size:1020Kb
Ingeniería del Software II: AJAX vs Silverlight Diego Martín-Serrano Fernández Francisco José Oteo Fernández Jesús Martínez-Campos Martínez Índice 1. Introducción a Ajax...............................................................................................................3 2. Profundizando en Ajax.........................................................................................................4 2.1. Frameworks para desarrollo Ajax.....................................................................................5 3. Conclusión sobre Ajax.........................................................................................................6 4. Introducción a Silverlight......................................................................................................7 5. Profundizando en Silverlight................................................................................................8 6. Conclusión sobre Silverlight..............................................................................................10 7. Comparativa Ajax vs Silverlight..........................................................................................11 8. Bibliografía..........................................................................................................................14 Índice de tablas Tabla 1. Posibles valores del atributo readyState del objeto XMLHTTPRequest....................4 Tabla 2. Frameworks para el lado del servidor, según el lenguaje de programación.............6 Tabla 3. Comparativa características técnicas Silverlight & Ajax..........................................12 Tabla 4. Comparativa de las capacidades 3D para las tecnologías Silverlight & Ajax..........13 1. Introducción a AJAX AJAX, del inglés Asynchronous JavaScript And XML (JavaScript asíncrono y XML), es una tecnología de desarrollo web utilizada para crear RIA (Rich Internet Applications). La idea es hacer que lo que está en Internet parezca que es una aplicación local dando una rica experiencia de usuario y ofreciendo características que normalmente sólo aparecen en aplicaciones de escritorio. El término AJAX fue acuñado por Jesse James Garret en 2005. AJAX en realidad es un conjunto de tecnologías que trabajan juntas para mejorar la experiencia del usuario: ● XHTML (o HTML) y CSS para mostrar la página. ● DOM (Document Object Model) + lenguaje ECMAScript (implementación JavaScript o Jscript) para modificar la página sin ser recargada. ● Objeto XMLHttpRequest para hacer las peticiones AJAX al servidor. ● XML, JSON, HTML o texto plano para mostrar la información. No es necesario que el contenido esté formateado en XML. Tampoco es necesario que las peticiones AJAX sean asíncronas. Navegadores que permiten AJAX (es decir, tienen implementado el objeto XMLHttpRequest): ● Los basados en Gecko (como Mozilla Firefox, Epiphany, Netscape, etc) ● Los basados en KHTML (como Konqueror y Safari) ● Google Chrome ● Internet Explorer 5.0 y superior ● Opera 8.0 y superior ● Navegadores móviles, como el navegador de la S60 de Nokia a partir de la tercera generación o Opera Mobile Browser 8.0 y superior Los navegadores antiguos, basados en texto y para invidentes no soportan AJAX. Aunque AJAX es un estándar del W3C, cada navegador (sobre todo versiones antiguas) ha llamado al objeto XMLHttpRequest de una manera diferente, por lo que hay que diferenciar entre cada navegador o tipo de navegador a la hora de crear el objeto. 2. Profundizando en AJAX El objeto XMLHttpRequest es el núcleo de las aplicaciones AJAX. Su especificación es la siguiente. XMLHttpRequest <<property>> +readyState : int <<property>> +responseText : string <<property>> +responseXML : document <<property>> +responseBody : byteArray <<property>> +status : int <<property>> +statusText : string <<event>> +onloadstart <<event>> +onprogress <<event>> +onabort <<event>> +onload <<event>> +onloadend <<event>> +onreadystatechange +abort():void +getAllResponseHeaders():string +getResponseHeader(header:string):string +open(method:string, url:string):void +send(content) +setRequestHeader(header:string, value:string):void +setResponseHeader(header:string, value:string):void La propiedad status contiene el código del resultado de la conexión HTTP: 200 (correcto), 404 (no encontrado), 500 (error del servidor), etc. El estado del objeto (atributo readyState) puede tener los valores mostrados en la tabla 1. Estado Valor Descripción Observaciones Sin inicializar 0 No se ha llamado a open() Cargando 1 Abierta (open). No se ha llamado a send() Cargando 2 Enviado. Se ha Cabeceras y estado llamado a send() disponibles. Interacción 3 Descargando o responseText tiene recibiendo datos parciales Completado 4 Operación completa Datos recibidos Tabla 1. Posibles valores del atributo readyState del objeto XMLHTTPRequest. 2.1. Frameworks para desarrollo AJAX Un framework de desarrollo AJAX es un framework que ayuda a desarrollar aplicaciones web que utilizan AJAX. Los datos se leen del servidor o se envían al mismo con peticiones Javascript. Sin embargo, puede que se necesite algún tipo de proceso en el servidor para manejar estas peticiones, como encontrar y almacenar los datos. Esto se puede llevar a cabo más facilmente con el uso de un framework dedicado a procesar las peticiones AJAX. El objetivo del framework es proveer un motor AJAX y funciones asociadas en el lado del cliente y en el lado del servidor. De esta forma, existen dos tipos de framework para el desarrollo de aplicaciones AJAX: ● Frameworks para el desarrollo en Javascript del Cliente. Simplifican el desarrollo de aplicaciones web que utilizan AJAX, evitando tener que controlar el objeto XMLHttpRequest “a mano”. ● Frameworks para el desarrollo del Servidor. Simplifican el desarrollo del servidor a la hora de generar los contenidos XML que se enviarán al cliente y procesar las peticiones enviadas por el cliente. Dentro del primer tipo (Javascript en el Cliente) podemos encontrar los siguientes frameworks: ● Prototype. Es uno de los más importantes. Viene incluído en el framework Ruby on Rails. ● jQuery. Incluida por Microsoft y Nokia en sus entornos de desarrollo. ● script.aculo.us. Basado en Prototype, permite todo tipo de efectos visuales, incluyendo drag&drop. También viene incluído con Ruby on Rails. ● ExtJS. Inicialmente era una extensión de YUI, jQuery y Prototype. Actualmente puede utilizarse como framework independiente. ● Mootools (My object oriented tools). Tiene de una API más enfocada a la Programación Orientada a Objetos. ● Yahoo UI Library (YUI). Incluye una serie de controles, utilidades y recursos para el desarrollo web. Dojo toolkit. Incluye widgets (controles) de diferentes tipos y skins para los mismos, además de soporte AJAX y almacén de datos en el cliente y en el servidor. Dentro del segundo tipo de framework (en el lado del servidor) podemos encontrar los siguientes frameworks: Lenguaje Frameworks Java DWR, Google Web Toolkit (GWT). Python Django, TurboGears, Pyjamas Ruby Ruby on Rails .NET ASP.NET AJAX (anteriormente Microsoft Atlas) C++ Wt PHP Quicknet, Sajax, Xajax Tabla 2. Frameworks para el lado del servidor, según el lenguaje de programación. Algunos de estos frameworks (como Pyjamas, un port a Python de GWT, o el mismo GWT) no se utilizan únicamente en el servidor, si no que generan automáticamente código javascript. Son compiladores python-javascript o java-javascript. 3. Conclusión sobre Ajax La principal ventaja de AJAX sobre otras plataformas para desarrollo de RIAs (Rich Internet Applications) es que es un estándar del W3C. Por esta razón cualquier software puede realizar su propia implementación del estándar (objeto XMLHttpRequest). De esta manera una aplicación AJAX se ejecuta en cualquiera de los navegadores más populares, independientemente de su sistema operativo y arquitectura. Otras tecnologías similares como Adobe Flash o Microsoft Silverlight son propietarias: sólo funcionan en los navegadores soportados por dichas empresas y únicamente utilizando su propio producto. La combinación de AJAX con el nuevo estándar HTML5 permite el desarrollo de aplicaciones con una mejor experiencia gráfica. También pueden utilizarse efectos gráficos en 3D con el uso de X3D. 4. Introducción a Silverlight Microsoft Silverlight es un complemento de Microsoft que nos permite desarrollar aplicaciones enriquecidas para la web. Silverlight funciona sobre varias plataformas y múltiples exploradores y proporciona una nueva generación de experiencias de usuario basadas en .NET. Tras una descarga que se instala en segundos, Silverlight posibilita una nueva plataforma rica, segura y escalable. Silverlight ofrece un modelo de programación flexible y coherente compatible con lenguajes .NET como Visual Basic, C# y F#, y otros como AJAX, Python, Ruby y que además se integra con las aplicaciones web existentes. Silverlight supone una nueva forma de aprovechar los elementos multimedia en los principales navegadores entre los que se incluyen Firefox, Safari e Internet Explorer tanto en MacOS como en Windows. Sirve por tanto como estructura para complementar las aplicaciones web que agrega nuevas funciones multimedia como la reproducción de vídeos, gráficos vectoriales, animaciones e interactividad, en forma similar a lo que hace Adobe Flash. Silverlight compite con Adobe Flex, NexaWeb, OpenLaszlo y algunas presentaciones de componentes AJAX. La primera versión de Silverlight fue lanzada en septiembre de 2007 y actualmente su versión 4.0 se distribuye de forma gratuita. 5. Profundizando en Silverlight Vamos a ver qué cosas