2009-04-24 12 views
7

¿Alguien tiene una recomendación para construir la aplicación ASP.Net MVC en forma modular enchufable? Me refiero a algunos posts/tutoriales de blogs, etc. Acabo de leer Hammet's MEF and ASP.NET MVC sample blogpost, pero no encuentro a MEF lo suficientemente maduro como para usarlo en producción todavía. No pude buscar en Google ninguna otra publicación relevante sobre este tema ...asp.net mvc aplicación modular howto/recommendations

Sé que podría lograr la modularidad implementando un ControllerProvider personalizado y algún mecanismo de inspección de complementos, pero me gustaría estudiar algunos enfoques más/mejores prácticas antes de empezar a volver a implementar la rueda :)


la modularidad que quiero decir con este tema debería cubrir sólo el punto de vista de aplicaciones web - nada al otro como modelo de aplicaciones/servicios modulares, etc que me gustaría encuentre el mejor método posible para separar una aplicación web en múltiples conjuntos que contendrían controladores adicionales, vistas, recursos, archivos JS + CSS, imágenes, etc. Así que debería haber algún proyecto principal de aplicación web que se vea para los ensamblajes de aplicaciones web conectables disponibles, cárguelos, publique sus controladores, visualice sus puntos de vista y otros recursos, y probablemente prepare algún menú con entrada para cada módulo de aplicación web.

No quiero discutir ningún modelo + servicios de arquitectura conectable aquí - solo el ASP.Net M VC parte.

+0

Estoy buscando hacer algo muy similar en el futuro cercano, hasta ahora no he encontrado nada que lo haga "de fábrica". Sin embargo, debería ser relativamente simple hacerlo manualmente, simplemente itere los ensamblados en bin y busque los herederos de una determinada interfaz. Creo que ... – roryf

Respuesta

3

La modularidad es un concepto bastante amplio, y creo que la respuesta a su pregunta solo tiene que ser subjetiva. Lo que está preguntando es una decisión arquitectónica, y no hay una buena manera de hacerlo. Dependiendo del proyecto, puede tener diferentes prioridades e importancia de las diferentes partes del sistema. Creo que el patrón MVC proporciona suficiente separación de preocupaciones, que es realmente el propósito de cada arquitectura modular.

Si desea poder conectar un módulo nuevo fácilmente en la aplicación existente, ¿cómo define un módulo? Creo que debe reducir un poco la pregunta para obtener respuestas no vagas y significativas.

+0

tienes razón, intenté editar la publicación para reducir el tema. – Buthrakaur

0

Los argumentos básicos para la modularidad son siempre los mismos ...

  • Comprobabilidad
  • mantenibilidad
  • Facilidad de implementación
1

El apoyo a la solicitudes parciales para rendir controladores 3ª Parte es totalmente compatible con el MVC, eche un vistazo a esta publicación: http://blog.codeville.net/2008/10/14/partial-requests-in-aspnet-mvc/

Obviamente, un módulo en un MVC contendría al menos un Controlador y una o varias Vistas. Pero tal vez lo que quería eran solo unos pocos, y por lo tanto es mucho más fácil reescribir el controlador que si fuera una arquitectura tradicional de WebForms.

O tal vez quiera reemplazar la fuente de datos, simplemente anule los métodos en la entidad Modelo, y ya está en funcionamiento. Es todo el núcleo principal en MVC, que separa los diferentes niveles de lógica, y que está obligado a hacerlo, a diferencia de WebForms que todavía le permite hacer SQL directamente en su vista si enlaza.

(Que MVC también lo admite no es por diseño, sino por herencia.)

0

Como punto de partida, se pudiera tomar algunas ideas de este artículo:

Spark View Engine - Modularity

Y el código de ejemplo:

spark/src/Samples/Modules

El código de la chispa Vista Motor árbol (que es un proyecto muy agradable y poderoso) pero no tiene mucho que ver con eso. Utiliza Castle para crear dependencias y todo eso.

Por cierto, he estado jugando con MEF, pero realmente no veo los beneficios en este momento y las cosas que necesitaba hacer se pueden hacer con Castle y algunas herramientas (ayudantes para consultar montajes y cosas por el estilo)

1

he encontrado un artículo que aborda algunos de los requisitos fundamentales que hablar. Lamentablemente, el artículo tenía un año de retraso, con ASP.NET MVC 3, así que lo reescribí y probé la metodología para que funcione con ASP.NET MVC 4. Puede read it here.

0

Entiendo que esta pregunta ya ha sido respondida. Pero, he estado buscando respuestas más actuales sobre este tema. Miré a Areas, como sugiere la respuesta original, pero también encontré los siguientes enlaces (Part 1 y Part 2) de Liviu Ignat, que respondieron esta pregunta desde una perspectiva de módulo conectable.

Cuestiones relacionadas