2008-10-07 14 views
21

¿Cuál es la forma estándar de permitir e implementar un sistema de complemento para su aplicación?Patrón de diseño para implementar complementos en su aplicación?

En mi última aplicación hice una interfaz simple para todos los complementos que deben implementar. Luego, cargo todos los ensamblados en el directorio de aplicaciones y elimino los que no implementan esa interfaz.

Uno de los métodos en la interfaz es un método DoWork() que periódicamente se ejecuta en todos los ensamblados cargados para realizar cualquier acción que los complementos puedan tener.

¿Cuál es la forma "correcta" de hacer un sistema de complementos? ¿Acabas de crear una interfaz para complementos? ¿Debería llamar periódicamente a un método en particular en todos los complementos? ¿Hay una manera más sofisticada?


EDIT:

Gracias Matt Hamilton por la referencia al espacio de nombres System.AddIn. Probablemente esta sea la forma en que implemente mis complementos. Sin embargo, todavía tengo curiosidad acerca de la arquitectura de los complementos en general y no me importaría conocer la mejor manera en que deberían diseñarse, implementarse. Cómo llamarlos una vez cargados, etc.

Respuesta

9

Revise el sistema. AddIn namespace según this response a una pregunta similar.

5

Glenn Block y Brad Abrams en Microsoft han lanzado recientemente el Marco de extensibilidad administrado que proporciona un marco para tratar exactamente con lo que estás hablando.

La documentación y la descarga están disponibles here.

Glenn's y Brad's blogs son también excelentes recursos para MEF.

4

Desde una perspectiva de patrón estrictamente de diseño, es posible que desee echar un vistazo a OSGi (esto es altamente orientado a Java, pero se considera que es un muy buen sistema de complemento/módulo). Puede ser exagerado para lo que está tratando de lograr, pero hay un lote de cosas realmente buenas sobre cómo manejar los módulos de carga y descarga dinámicamente en el medio de una ejecución, etc ...

Cuestiones relacionadas