2008-09-16 18 views
5

Tengo la intención de desarrollar un sistema totalmente basado en módulos. La base del sistema debe tener soporte para averiguar sobre complementos, iniciarlos y poder proporcionar formas para que esos módulos se comuniquen. Idealmente, uno debería ser capaz de poner nuevos módulos y tirar de los módulos no utilizados a voluntad, y los módulos deberían poder usar la funcionalidad de los demás si está disponible.¿Cómo debo comenzar a desarrollar un sistema basado en módulos o complementos?

Este sistema debe usarse como base para sistemas de simulación donde muchas cosas pasan en diferentes módulos, y otros módulos pueden querer hacer algo basado en eso.

El sistema que pretendo desarrollar va a ser en Java. De la forma en que lo veo, tengo la intención de tener una carpeta con una subcarpeta para cada módulo que incluya un XML que describa el módulo con información como el nombre, tal vez qué eventos podría generar, cosas así. Supongo que podría necesitar escribir un ClassLoader personalizado para resolver este problema.

La cuestión es que no sé si mi idea realmente contiene agua y, por supuesto, tengo la intención de construir un prototipo funcional. Sin embargo, nunca antes había trabajado en un sistema realmente modular, y no estoy seguro de cuál es la mejor manera de abordar este problema.

¿Dónde debería empezar? ¿Existen problemas y dificultades comunes que se encuentran al desarrollar este tipo de sistema? ¿Cómo puedo hacer que los módulos hablen entre ellos manteniendo el aislamiento (es decir, quita un módulo y que otro módulo que lo estaba usando se mantenga en forma)? ¿Hay alguna guía, especificaciones o artículos que pueda leer que me puedan dar algunas ideas sobre dónde empezar? Sería mejor si estuvieran basados ​​en Java, pero esto no es un requisito, ya que lo que estoy buscando ahora son ideas, no código.

Se agradece cualquier comentario.

Respuesta

9

Definitivamente debe mirar OSGi. Su objetivo es ser el componente/mecanismo de complemento para Java. Le permite modularizar su código (en los denominados paquetes) y actualizar paquetes en tiempo de ejecución. También puede ocultar completamente los paquetes de implementación del acceso no deseado por otros paquetes, por ej. solo provee la API.

Eclipse fue el primer gran proyecto de código abierto para implementar y usar OSGi, pero no lo aprovechó al máximo (no hay instalaciones de complementos/actualizaciones sin reinicios). Sin embargo, si comienzas desde cero, te dará un marco muy bueno para un sistema de complemento.

Apache Felix es una implementación completa de código abierto (y hay otros, como Eclipse Equinox).

+0

Muchas gracias por la dirección proporcionada. Fue una respuesta muy rápida y fue suficiente para comenzar. ¡Gracias de nuevo! –

1

Sin entrar en detalles, debe consultar Spring y una familiarización con OSGI o los marcos Eclipse RCP también le brindarán algunos conceptos fundamentales que deberá tener en cuenta.

0

Son muchas maneras de hacerlo, pero algo simple puede ser mediante el uso de Reflection. Usted escribe en su nombre de archivo XML el archivo (que sería una clase en reallity). Puede comprobar qué tipo es y crearlo de nuevo con reflexión. La clase podría tener una Interfaz común que le permitirá encontrar si el archivo/clase externo es realmente uno de su módulo. Aquí hay alguna información sobre Reflexion.

También puede utilizar un marco precodificado como este SourceForge one link text que le dará un primer buen paso para crear el módulo/complemento.

Cuestiones relacionadas