lunes, 17 de agosto de 2009

Aplicaciones modulares en Flex

Hola, despues de un pequeño descanso ya hemos vuelto. Hoy quería hablar de un tema que tenía en el tintero desde hace un tiempo. las aplicaciones modulares en Flex.

La primera cuestión que nos viene a la cabeza es ¿Por qué una aplicación modular?, por que hemos de complicar el desarrollo para desarrollar modulos y tener que añadir cierta lógica extra para manejarlos. En efecto, el desarroollo modular supone cierto coste en tiempo de desarrollo y de ejecución de la aplicación, por tanto no todas las aplicaciones son susceptibles de desarrollarse de forma modular. En mi opinión es una cuestión de tamaño y/o complejidad, para desarrollar una pequeña aplicación muy simple quizás no sea recomendable, dado la carga extra que supone. La modularidad empieza a mostrar sus ventajas conforme el proyecto crece y se complica, pudiendo observar grandes beneficios:
  • Reducción del tiempo de compilación --> Dado que trabajamos con módulos, sólo recompilaremos los módulos en los que hay acambios.
  • Reducción del tamaño de los archivos compilados (SWF y SWC).
  • Reutilización --> Podemos reutilizar dicho módulo en otras aplicaciones.
  • Simplifica la adición de nuevas funcionalidades mediante la adición de nuevos módulos.
  • Carga/descarga de módulos dinámicamente--> Liberación de recursos.
  • Desarrollo entre distintos grupos de trabajo.
La realización de programas modulares en Flex podríamos englobarla básicamente en 4 categorías:
  • Uso de Módulos.
  • Uso de Librerías.
  • Uso de RSL (Runtime Shared Libraries).
  • Uso de librerías, RSL y módulos de forma conjunta.
Modulos
Los módulos son archivos SWF que pueden ser cargados dinamicamente y que no pueden ejecutarse independientemente, sino que deben ejecutarse dentro de una o varias aplicaciones. Un módulo puede interactuar con la aplicación padre o con otros módulos.

Podemos definir un módulo usando la clase Module.

Librerías
Como en cualquier otro lenguaje, una librería es un conjunto de funcionalidades y/o recursos que se encapsulan, en este caso se encapsulan en un fichero SWC.

RSL (Resource Shared Library)
Como su nombre indica es la una librería de recursos compartidos. La importancia de este tipo de librerías es que dicha librería se carga una sola vez en el arranque de la aplicación (se puede ver la barra de carga al principio), de forma que desde ese momento podemos utilizar todos los recursos de la librería sin necesidad de cargar la librería. Como es lógico este proceso puede ralentizar el proceso de startup de la aplicación, así hay que decidir con cuidado que librerías se cargarán como RSL (basándonos en la utilización de la librería).
Otro punto importante del uso de RSL, es que usando lo adecuadamente podemos reducir el tamaño de nuestros módulos/aplicaciones, ya que la librería se compilara en un fichero aparte que será reutilizado, y no se incluirá el código especifico que se usa de la librería en cada archivo compilado SWF.

Desde mi experiencia, recomiendo encarecidamente el uso de aplicaciones modulares para aplicaciones de cierta envergadura, ya de esta manera se puede disfrutar de un conjunto de ventajas muy interesantes a un coste relativamente pequeños, ya que sólo requiere el coste inicial de la gestión de módulos y una vez que se tenga implementada dicha gestión se pueden añadir funcionalidades facilmente.

2 comentarios:

  1. Actualmente tenemos un proyecto con 233 .mxml.. de los 233 .mxml... 15 corresponden al departamentoA.. los siguientes 20 al departamento B.. y asi sucesivamente.. ¿Que me recomiendas para poder implementar la modularidad?

    ResponderEliminar
  2. Acabo de ver tu comentario a la vuelta de vacaciones.

    Realmente no haría una distinción en módulos basándome en el número de ficheros mxml. Eso si, parece que tiene un tamaño considerable para plantearse separarlo.

    Lo que puedes hacer es separar funcionalmente, si cada departamento posee funcionalidades diferentes y separadas puedes crear un modulo por departamento. Todo lo que sea común (componentes propios, renderers, etc) lo puedes añadir en una librerían.

    El quid de la cuestión es separar las funcionalidades.

    Saludos.

    ResponderEliminar