http://goo.gl/zhFJ7

Anuncio
http://goo.gl/zhFJ7
RIA
Desarrollo con Tecnologías Open
Source
Diego F. Quiroga [email protected]
Tecnologías de la Información Universidad Nacional de San Luis
Introducción
Las nuevas tecnologías y estándares como AJAX, HTML5
y potentes motores JavaScript están popularizando el
desarrollo de RIA y resultan cada vez más atractivas,
mientras que los enfoques de desarrollo clásicos van
quedando obsoletos y en desuso. No obstante, los
beneficios de estas aplicaciones traen aparejada cierta
dificultad en su desarrollo, debido a la cantidad de
conceptos y tecnologías que involucran.
Introducción
Rich Internet Application (RIA)
•
•
•
JavaScript
AJAX
HTML5
RIA (Rich Internet Application)
•
Una RIA es una aplicación WEB que incorpora características
similares a las de las aplicaciones de escritorio.
•
Busca mejorar la experiencia y productividad del usuario,
manteniendo las ventajas de la web (despliegue,
disponibilidad, independencia de la plataforma, escalabilidad,
etc).
Aplicaciones
de Escritorio
RIA
Tecnologías de
Comunicación
Aplicaciones
WEB
RIA (Rich Internet Application)
Aplicaciones
WEB
Aplicaciones
de Escritorio
RIA
Tecnologías de
Comunicación
RIA
Ejemplos: Gmail
RIA
Ejemplos
RIA
Ejemplos: Trello
Características de una RIA
•
Interfaces rápidas (one page apps), atractivas y no
bloqueantes.
•
•
•
Comunicaciones asíncronas.
Pueden tener características real time.
Manejo de estado, lógica y presentación en el cliente
(statefull).
•
Clara distinción entre la capa cliente (frontend) y servidor
(backend).
Arquitectura tradicional vs
RIA
RIA - Desventajas
•
Aumenta la complejidad en el diseño y el desarrollo
(más capas y tecnología involucrada).
•
El asincronismo complica el flujo de la aplicación,
dificulta detectar errores y situaciones no deseadas.
•
Hay que dedicar un esfuerzo adicional a la
comunicación y entendimiento entre el backend y el
frontend.
RIA - Ventajas
•
•
•
•
•
Mejor experiencia del usuario (UX).
•
El lenguaje y la tecnología utilizada en el backend es
independiente de la del frontend.
•
El backend y el frontend se pueden desarrollar por
separado.
Menos tráfico en la red.
Menos carga y uso de recursos en el servidor.
La programación del backend es más simple.
El backend se puede convertir en un API y servir distintas
aplicaciones.
RIA
Situación previa (UNSL)
•
•
•
•
•
Experiencia en desarrollo web tradicional.
•
Mejora de algunas aplicaciones incorporando jQuery
jQueryUI y AJAX.
•
Aproximación (no muy satisfactoria) a la programacion RIA
con JavaScript y jQuery.
Manejo de Apache y PHP en entorno linux.
Desarrollo MVC con el framework CakePHP.
DB engine INFORMIX (bases mas importantes).
Implementación de algunos servicios remotos sobre XMLRPC (en PHP).
RIA
Primeras luces desde Trello
Frontend (Cliente)
Javascript - AJAX / JSON
Estructura de la aplicacion javascript
(patrón MVC)
Manejo de templates (HTML)
Persistencia de Datos
ToolKit Gráfico (layouts, controles, css)
para la interface de usuario.
Backend (Server)
HTTP Server
JSON
CakePHP?, Node.JS?
•
•
•
•
•
•
•
•
RIA
Elección de Herramientas
JQuery
Spine
framework MVC javascript
Bootstrap
fr
ontend framework
Apache + CakePHP
(REST server)
Frontend (Cliente)
Javascript - AJAX / JSON
Estructura de la aplicacion javascript
(patrón MVC)
Manejo de templates (HTML)
Persistencia de Datos
ToolKit Gráfico (layouts, controles, css)
•
•
•
•
•
Backend (Server)
HTTP Server
JSON
CakePHP?, Node.JS?
•
•
•
RIA
jQuery
http://jquery.com
Librería muy potente, versátil y ampliamente difundida que simplifica la
programación en javascript. Tiene muchas utilidades, y extensiones en
forma de plugins que la convierten en una herramienta muy potente y
extremadamente útil.
Lo más importante:
Cross-Browser: permite abstraernos de los detalles de cada
navegador.
•
•
•
•
La facilidad que da para recorrer y manipular el DOM (el HTML).
El soporte para el manejo de eventos.
El soporte para AJAX.
RIA
jQuery (ejemplos)
RIA
CoffeeScript
http://jashkenas.github.io/coffee-script
"Un pequeño lenguaje que compila a JavaScript"
•
•
•
Disponible como módulo de Node.js
Sintaxis clara, legible (similar a ruby)
Por ser "JavaScript" se puede usar cualquier librería javascript (jQuery,
etc) ... y viceversa.
•
Clarifica y simplifica significativamente la programación orientada a
objetos.
RIA
CoffeeScript (ejemplo POO CS vs JS)
RIA
Spine
http://www.spinejs.com/
Simple, liviano, documentado ... funciona "out of the box"
RIA
Spine (lo importante)
•
Incluye módulos para Node.js que nos brindan un entorno de
desarrollo y deploy integrados (Hem, SpineApp).SpineApp:
utilidades para crear controladores, modelos y modelos de
test.Hem: compila coffeescript, less, y los integra en un unico
archivo (application.js y application.css). Además arma un servidor
para desarrollo que va compilando en tiempo real.
•
"Out of the box": incluye lo necesario para integrar estructura,
persistencia, manejo de templates, sin tener que instalar extras.
•
Escrito en CoffeeScript: permite desarrollar en CoffeeScript o JS.
RIA
Spine (estructura)
RIA
Spine (ejemplos)
Estructura de directorios
de una app Spine
Controladores
Modelos
RIA
Interface de usuario
http://twitter.github.com/bootstrap
RIA
Bootstrap
Bootstrap viene equipado con una buena variedad de estilos,
componentes y plugins que cubren la mayoría de las necesidades de
una aplicación web.
•
•
•
•
•
•
•
•
•
•
•
Botones y grupos de botones
Dropdowns
Barras de navegación
Menús y submenús.
Tabs, Listas
Etiquetas, tooltips, alertas.
Accordions
Carousel
Diálogos
Barras de progreso,
etc.
Y lo más importante, se pueden empezar a
usar desde el markup sin escribir ni una
línea de JavaScript.
RIA
Bootstrap (ejemplo)
Progressbar desde el markup: class="progress"
RIA
Bootstrap (responsive)
Soporte para adaptarse al viewport de tres tipos de
dispositivos mostrando u ocultando elementos de la
pantalla.
PC de Escritorio - Tablet - Teléfono
RIA
Bootstrap (grid system)
•
•
•
•
Sistema de grillado en filas y columnas.
Layout de ancho fijo: 940 px en 12 columnas.
Ancho fijo adaptativo: 724 a 1170 px en 12 columnas.
Layout fluído: porcentajes en lugar de pixels.
RIA
Backend
• Rest + Json
• CakePHP (con soporte Informix)
• Apache
RIA
Un prototipo de prueba
RIA
Un prototipo de prueba
RIA
Conclusiones
•
•
•
•
•
El desarrollo de una RIA puede ser una tarea compleja y difícil de
abordar. Encontrar la combinación de herramientas adecuadas es un
paso sumamente importante para iniciarse en el desarrollo.
La combinación planteada (CoffeeScript + Spine + Bootstrap)
favorece un inicio relativamente rápido permitiendo obtener
resultados tempranos sin un esfuerzo desmedido.
Desarrollar este tipo de aplicaciones, incentiva el desarrollo de
servicios (backend) que se pueden extender para dar disponibilidad
de los datos a distintas aplicaciones.
Tendremos mayor disponibilidad de la información (incluso entre
aplicaciones).
Tendremos usuarios más contentos (aplicaciones mas modernas y
amigables)
LISTOP
https://bitbucket.org/unsl/listop
•
•
•
•
Herramienta para estadísticas.
Genera listados de datos y permite combinarlos.
Permite incorporar datos externos (Excel).
Consultas generales sobre SIU Guaraní (INFORMIX).
LISTOP
Consultas y listados
LISTOP
Combinación de listados
RIA
¡Muchas Gracias!
http://goo.gl/zhFJ7
Diego F. Quiroga [email protected]
Tecnologías de la Información Universidad Nacional de San Luis
Descargar