Estoy tratando de implementar un complemento como aplicación. Sé que ya hay varias soluciones, pero esto solo será una prueba del concepto, nada más. La idea sería hacer que la aplicación principal de la aplicación sea casi sin rasgos por defecto y luego permitir que los complementos se conozcan unos a otros, haciendo que implementen todas las características necesarias.Arquitectura tipo complemento en .NET
Un par de cuestiones surgen:
- Quiero que los plugins en tiempo de ejecución a saber el uno del otro a través de mi solicitud. Eso no significa que en el momento del código no podrían hacer referencia a los ensamblajes de otros complementos para que puedan usar sus interfaces, solo esa inicialización de la característica del complemento debería ser siempre a través de mi aplicación principal. Por ejemplo: si tengo ambos plugins X e Y cargados y Y quiere usar las características de X, debería "registrar" su interés a través de mi aplicación para usar sus características. Tendría que tener una especie de "diccionario" en mi aplicación donde almaceno todos los complementos cargados. Después de registrarme para obtener mi interés en mi aplicación, el complemento Y obtendría una referencia a X para poder usarlo. ¿Es este un buen enfoque?
- Al codificar el complemento Y que usa X, necesitaría hacer referencia al ensamblaje de X, así que puedo programar contra su interfaz. Eso tiene el problema de versionar. ¿Qué pasa si codigo mi complemento Y contra una versión desactualizada del complemento X? ¿Debo usar siempre un lugar "central" donde estén todos los ensamblajes, teniendo siempre las versiones actualizadas de los ensamblajes?
¿Hay algún libro que trate específicamente con este tipo de diseños para .NET?
Gracias
edición: creo que la gente se están alejando de las 2 preguntas que hice. Puedo echar un vistazo a MEF y #develop, pero me gustaría obtener respuestas específicas a las preguntas que hice.
Recomiendo buscar en MEF, que es nuevo pero parece muy prometedor. –
@Matt - creo que debería poner esto como una respuesta - eso es exactamente lo que iba a decir –
Ya he oído hablar de MEF, pero como se dice en el PO, mi idea no es utilizar un marco ya construido sino implementar yo mismo. No necesita algo muy complejo. –