2009-09-01 12 views
9

Introducción: Ahora sé esta pregunta podría ser muy amplio y sería demasiado difícil de responder sin que me pide algo específico. Entonces, todo lo que pido es solo una dirección, o una breve explicación de alto nivel de un diseño, o tal vez ya hay algún marco que me podría ayudar a comenzar ... No estoy seguro ... nunca he diseñado un complemento arquitectura anterior, así que tal vez haya algún recurso/ejemplo al que me puedas dirigir en la web que me ayude a aprender para poder encontrar mi propia solución.Cómo diseñar una arquitectura plug-in para ASP.NET MVC con aplicación web

detalles de mi pregunta: mi intención es me gustaría crear una arquitectura plug-in para una nueva mascota-proyecto que estoy construyendo en ASP.NET MVC.

Me gustaría diseñarlo para que tenga algún tipo de capacidad de plug-in para todos, o al menos la mayoría de los componentes de la aplicación.

La razón por la que me gustaría hacer esto es porque puedo realizar implementaciones con un tiempo de inactividad casi nulo. La idea es que cuando quiera implementar la última versión, incluiría los nuevos archivos DLL en una carpeta específica, y la aplicación cargaría los nuevos complementos y eso es todo.

Por ejemplo, digamos que agrego una nueva función de "contactos" a mi aplicación web donde los usuarios pueden buscar, agregar y eliminar contactos. Me gustaría poder implementar eso a través de complementos.

¿Algo así es posible incluso para aplicaciones web? ¿O solo estoy soñando?

+0

He estado pensando en lo mismo y tengo varias ideas. Contáctame directamente a spurious.thought [at] gmail –

Respuesta

3

Definitivamente es posible.

Tendrá que definir una interfaz bastante completa que represente todo lo que sus complementos tendrán que hacer. Debe abordarlo diferenciando lo que es "central" para su aplicación, y dónde están los puntos de extensibilidad. Por ejemplo, ¿dónde se accederá a los complementos? ¿Serán pestañas en una página o enlaces en una barra lateral? ¿Qué propiedades necesita tener cada complemento para que quepa en el contenedor de complementos?

En general, los complementos se enumeran por reflexión al buscar ensamblajes que implementen la interfaz del complemento.

Solo para animarlo, lo hemos hecho con un producto empresarial que proporciona un marco genérico para interfaces de "administración" para sitios web. Los desarrolladores solo necesitan instalar un plugin dll que construye páginas de propiedades específicas, y se muestran en el menú de la interfaz de administración, toda la navegación se resuelve y sus dll solo tienen que preocuparse por su propia lógica de dominio.

1

Siempre existe la forma dll-way donde se definen algunas interfaces que siguen los complementos.

Pero para aplicaciones web, especialmente ASP.NET MVC, necesita un controlador, vistas y demás. Probablemente estos se pueden incluir en un archivo dll utilizando la fábrica de controladores preparada para manejar eso, pero sería difícil desarrollar estos complementos. Alguna inspiración para el contenido incrustado de código (o db): Haacked about that

ASP.NET MVC versión 2 admitirá áreas, donde puede colocar algunas partes de la aplicación en diferentes carpetas dentro de la aplicación. De esta manera, puedes subir algunos archivos y la aplicación reconocerá estos nuevos archivos.Lea más allí Haacked blog

Cuestiones relacionadas