![]() |
![]() |
![]() |
![]() |
![]() |
FTP | ![]() |
![]() |
CCD | ![]() |
![]() |
Buscar | ![]() |
![]() |
Trucos | ![]() |
![]() |
Trabajo | ![]() |
![]() |
Foros | ![]() |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
![]() |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
Spring Framework, Runtime Packages y Plugins
Hola a todos!
A raíz de un video que he visto del Coderage 6 se me ha ocurrido una nueva forma de tratar los plugins. Al final están todos los links. Os cuento: La "spring framework" es una librería para eliminar la dependencia entre units. El video que indico más abajo está muy bien explicado, y se ve claramente el objetivo de eliminar toda la dependencia entre clases para trabajar únicamente con Interfaces, sin tener que realizar nunca una llamada a TMyClass.Create. Mi problema con los plugins es el siguiente: generalmente, tengo un paquete padre en el que declaro las clases, de las que los plugins deben derivar para que sean reconocidos. Cualquier cambio a este paquete, me obligaba a recompilar TODOS los paquete derivados, y por tanto, tener que redistribuir de nuevo todos los paquetes, perdiendo la gracia de los plugins. Si se trabajaba en el paquete padre con interfaces, sin tener una implementación, entonces TODOS los paquetes plugin tenían que implementar toda la lógica cada vez, perdiendo también su funcionalidad. Entonces me pregunté (después de ver el vídeo claro ![]() Funcionó! ¿Cuál es la diferencia entre antes y ahora? Antes necesitaba derivar de una clase que aparecía en el paquete padre. Si la implementación de dicha clase cambiaba, había que recompilar todos los plugins derivados de éste. Ahora, en el paquete padre sólo hay una o varias interfaces, y la implementación se encuentra en un segundo paquete, conectado en runtime mediante la "Spring Framework". El resto de paquetes (o incluso el .exe principal), no ven los paquetes de implementación, sino sólo el de interfaz, por tanto, puede cambiar el paquete de implementación sin necesidad de recompilar el resto. He conseguido desacoplar todos los plugins del paquete principal, cosa que sin este framework era imposible. Además, he comprobado que si se modifica el paquete de implementación de modo que sólo se añaden interfaces (no se modifican las ya existentes), no hace falta recompilar todos los paquetes, dado que las interfaces viejas no han cambiado. Os he dejado los links en http://www.clubdelphi.com/foros/showthread.php?t=76420, concretamente el titulado "Delphi, Dependency Injection, and the Delphi Spring Framework" se encuentra en http://cc.embarcadero.com/item/28573. La librería "Spring Framework" la podeis encontrar en http://code.google.com/p/delphi-spri...ource/checkout. La única pega es que el framework funciona únicamente con Delphi 2010 o superior (ya que utiliza el RTTI nuevo, que apareció en esa versión de Delphi). Os dejo también un pequeño proyecto, en el que utilizo un paquete padre con dos interfaces, dos paquetes con implementaciones de dichas interfaces, y el .exe que utiliza exclusivamente el paquete padre, sin saber nada de los otros dos (sólo los carga), ni siquiera crea instancias de las clases de éstos, pero llama a métodos de dichas clases (MAGIA!!! ![]() La verdad, le veo mucho futuro al spring framework este, tanto para facilitar la depuración de código (eliminando dependencias) como gestor de plugins. Un saludo, LoPiTaL Última edición por LoPiTaL fecha: 31-10-2011 a las 13:40:19. |
#2
|
||||
|
||||
Hola, puedes subirlo a nuestro FTP, en la sección que corresponda.
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código | Colabora mediante Paypal |
#3
|
|||
|
|||
Ok, subido. No sabía que todos podíamos subir archivos al FTP.
Un saludo, LoPiTaL |
![]() |
|
|
![]() |
||||
Tema | Autor | Foro | Respuestas | Último mensaje |
INFO: DLL's, BPL's, carga dinámica, carga estática y Packages en Runtime | Neftali [Germán.Estévez] | OOP | 26 | 13-12-2013 19:29:55 |
Duda con Build with runtime packages | dtomeysoto | Varios | 5 | 18-12-2009 21:05:41 |
Como se crean los packages? | lbidi | Varios | 2 | 11-05-2004 21:54:51 |
Comportamiento de los Packages | unicode | OOP | 2 | 07-09-2003 18:22:38 |
Plugins | saul_montalvo | Varios | 2 | 19-08-2003 18:32:49 |
![]() |
|