Problema:
estoy construyendo un marco que acepta un archivo, traduce y ejecuta ella. El framework debería ser capaz de manejar cualquier tipo de archivo, con este fin he proporcionado un método para cargar un archivo DLL que contiene clases y métodos para que traducen y ejecutando un archivo. Lo que busco, es la mejor manera para definir la interfaz de complementospatrón Plugin en C#
Solución A:
definir un conjunto de interfaces que están disponibles públicamente. Los complementos deberían implementar estas interfaces.
Solución B:
definir algunas clases abstractas que están disponibles públicamente. Los complementos deben heredarse y anular los métodos abstractos en estas clases.
Solución C:rcravens
interfaces de pasar alrededor dentro del código, crear una clase abstracta que está disponible públicamente para permitir la extensibilidad plugin. Elegido
Esta solución se eligió antes que la interfaz solo porque permite una implementación básica (útil en este caso). Fue elegido antes de la clase abstracta solo porque permite burlarse dentro del código. Los marcos de composición son excelentes, pero un poco exagerados para algo tan ligero como esta aplicación donde solo se desea una extensibilidad limitada.
Solución D:JayChris Shain y
implementar un marco de composición (como Managed Extensibility Framework(MEF)) y construir a su alrededor
Si aparecen nuevas soluciones, voy a añadir a esta lista. La respuesta va a ir a la persona que es más capaz de justificar su solución (posiblemente con ventajas y limitaciones)
Gracias de antemano,
Tech Prueba Amigo
¿Qué hay de MEF y MAF? No sé a qué te refieres cuando hablas de traducción, pero MEF y MAF (posiblemente enriquecidos con algunas cosas habituales de DI) están hechos para construir aplicaciones compuestas. Es posible que desees que skim lea el código Prism (WPF compuesto), todo se trata de aplicaciones compuestas, también conocidas como módulos/complementos. Si habla de aplicaciones web, la fuente de Orchard CMS también podría ser interesante. Estos chicos han creado una buena infraestructura de complementos además de ASP.NET MVC. – Jay
La aplicación en cuestión es un servicio web, sentado en un servidor. La idea es que muchas personas pueden proporcionar archivos para 'traducción' y algunas personas pueden proporcionar complementos. Cuando las personas proporcionen sus archivos, seleccionarán qué complemento se debe usar para 'traducirlos'. El final de UI real (WPF, MVC, etc.) no es el problema en este momento. Hasta ahora, me he mantenido alejado de los marcos anteriores a la definición, ya que tienden a ser bastante desleales. Corrígeme si estoy en el error –
No he trabajado con MAF todavía y no sé si todavía lo mantiene MS pero creo que al menos MEF debería proporcionar la infraestructura necesaria. No está limitado a cosas de GUI. Aunque creo que @Chris Shain tiene razón, no reinventes la rueda. Por cierto: ¿qué pasa con la seguridad? Quiero decir que alguien podría cargar código malicioso como un complemento. Parece que se requiere una caja de arena. – Jay