martes, 13 de enero de 2009

Algo sobre Frameworks y Arquitectura MVC y RIA (Rich Internet Applications)

Introducción:
Es difícil empezar a escribir. Primero, por que es mi primer post en este blog y me imagino que debo soltar un poco la mano antes de tomar confianza y soltura.
En realidad no se por qué este primer post está dedicado a la arquitectura MVC. Será que es de las cosas que me interesa aprender? por que les digo desde ya: La palabra experto siempre me ha parecido muy subjetiva y yo no me considero experto en ninguna rama de la informática, mas bien la experiencia, los estudios y la lectura, me han llevado a saber de todo un poco y también por eso un poco el título del blog. Entre tanta cosa, sigla, iniciales, tecnologías, empresas, marcas... díganme, quién no se ha sentido un poco desorientado en este mundo?

Frameworks
Según wiki: Un framework, en el desarrollo de software, es una estructura de soporte definida 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 software para ayudar a desarrollar y unir los diferentes componentes de un proyecto.
Representa una arquitectura de software que modela las relaciones generales de las entidades del dominio. Provee una estructura y una metodología de trabajo la cual extiende o utiliza las aplicaciones del dominio.


La verdad es que leo esa definición y me parece muy técnica aunque si explicativa. En el fondo, lo que quiere decir es que un framework es un programa que permite hacer programas. Complementando lo anterior, es necesario mencionar que hsata ahora estoy hablando solamente de una herramienta, independiente de la tecnología.
hoy en día muchas empresas han desarrollado o adaptado (dependiendo de sus propias necesidades) estos programas (generalmente basados en productos opensource) permitiendo disminuir los tiempos de desarrollo. Un sencillo ejemplo podría ser que para generar una lista de elementos desde una base de datos (por ejemplo una lista de ciudades), cosa que trabajando en forma bruta significaría crear una consulta que extraiga los elementos desde la base de datos y crear el código para que la lista se genere dinámicamente, con un framework esta misma acción podría simplificarse a una línea de código en que se pasen como parámetros los elementos necesarios para que la lista sea desplegada (parámetros como la tabla que desea ser consultada, cual será la opcion por defecto, si es una lista en que se pueden seleccionar varios elementos o solo uno, el método de ordenamiento, etc.
Ejemplo: en el framework Akelos (fue el primer ejemplo que encontré), el código sería:

$form_options_helper->select ($object_name,$column_name,$choices, [ $options ],[ $html_options ])

No me voy a extender mas sobre esto. Mas bien espero haber clarificado un poco de que se trata un framework. Su utilidad.
En la red hay muchos y para todos los gustos. Por ejemplo:
En la página http://www.phpframeworks.com/
hay una tabla comparativa de frameworks para PHP que indica cuáles son sus principales funcionalidades o soportes.
También los hay en Java si es que alguien tiene preferecias por este lenguaje.
En este sentido intentaré ser imparcial y mis recomendaciones serían que al momento de elegir un Framework, se fijen en:
- Tipo de aplicacion a desarrollar
- Facilidad en el desarrollo
- Soporte del framework (que tan amplia es la comunidad del proyecto)
- Si se vislumbra continuidad en el desarrollo del framework
- Soporte de tecnologías (características técnicas)
Además de:
- No crean todo lo que dicen los blogs y/o artículos
- Pruebenlo ustedes mismos
- Ver si se ajusta a los intereses corporativos
- Intenta realizar un prototipo en los que elijas y si sale muy complicado, deshéchalo.
- Intenta documentar todo. Desde por qué no te gustó un framework hasta por qué elejiste uno mas antiguo.

Ahora, para hacer el enganche con el siguiente tema, debo decir que los Frameworks permiten realizar el desarrollo de aplicaciones de acuerdo a cierta arquitectura.
Por ejemplo: Una de las arquitecturas más extendidas y por tanto la mayoría de los frameworks la soportan es la aquitectura MVC (Modelo / Vista / Controlador)
La idea de esta arquitectura es separar la aplicacion en "datos", "interfaz de usuario" y "lógica de control".
Modelo: Es la representación de la información con la cual el sistema opera. La lógica de datos asegura la integridad de estos y permite derivar nuevos datos.
Vista: Este presenta el modelo en un formato adecuado para visualizar y operar (interactuar), típicamente conocido como "interfaz de usuario".
Controlador: Este responde a eventos, usualmente acciones del usuario e invoca cambios en el modelo y probablemente en la vista.
RIA
Y para terminar con este artículo, no puedo dejar de mencionar el concepto RIA.
Según Wikipedia: RIA, acrónimo de Rich Internet Applications (Aplicaciones Ricas de Internet) son un nuevo tipo de aplicaciones con más ventajas que las tradicionales aplicaciones Web. Esta surge como una combinación de las ventajas que ofrecen las aplicaciones Web y las aplicaciones tradicionales.

Normalmente en las aplicaciones Web, hay una recarga contínua de páginas cada vez que el usuario pulsa sobre un enlace. De esta forma se produce un tráfico muy alto entre el cliente y el servidor, llegado muchas veces, a recargar la misma página con un mínimo cambio.

Otra de las desventajas de las tradicionales aplicaciones Web es la poca capacidad multimedia que posee. Para ver un vídeo es necesario usar un programa externo para su reproducción.

En los entornos RIA, en cambio, no se producen recargas de página, ya que desde el principio se carga toda la aplicación, y sólo se produce comunicación con el servidor cuando se necesitan datos externos como datos de una Base de Datos o de otros ficheros externos.

Las capacidades multimedia son totales gracias a que estos entornos tienen reproductores internos y no hace falta ningún reproductor del Sistema Operativo del usuario.

Hay muchas herramientas para la creación de entornos RIA. Entre estas se puede mencionar las plataformas Adobe Flash, Adobe Flex y Adobe AIR de Adobe, AJAX, OpenLaszlo, Silverlight de Microsoft, JavaFX Script de Sun Microsystems y Bindows de MB Technologies.

Y para terminar, teniendo la tecnología RIA, en una arquitectura MVC y con un framework que soporte ambas, creo que las aplicaciones serán cada día mejores. En una artículo leí que para el 2010, el 60% de las aplicaciones serán construídas utilizando este esquema. Queda en nuestras manos informáticas el hacer que esta cifra aumente. Y cómo? aprovechando la tecnología existente, implementando la amplia gama de posibilidades que ofrece la WEB 2.0, aprendiendo a utilizarlas y potenciandolas. Espero con este artículo haber abierto un poco las mentes y haber alimentado el apetito de más de alguien.
Dejo acá algunos Frameworks que están hechos para desarrollar "RIA's"
Spring Richclients
Ariaware ARP
Scope
Cairngorm

Eso por ahora. Que lo disfruten

Seja o primeiro a comentar

Publicar un comentario

Powered By Blogger

Un informático desorientado © 2008. Template by Dicas Blogger.

TOPO