2009-10-20 10 views
8

Me sorprende que no pueda encontrar más discusiones sobre un problema que realmente me molesta en nuestro proyecto utilizando ASP.NET MVC.ASP.NET MVC Project Structure para sitios más grandes

¿Cómo se puede tratar con una solución de Visual Studio que tiene múltiples proyectos? El marco MVC tiene la carpeta Modelos/Vistas/Controladores en el proyecto principal. Pero, ¿qué sucede si desea dividir su solución en múltiples proyectos a lo largo de agrupaciones lógicas y llevar los modelos/vistas/controladores junto con ella? Cuando pienso en el futuro hasta el final del proyecto, habrá muchas clases en cada una de estas carpetas. No pinta una estructura organizada limpiamente que ayude al mantenimiento. Nos gustaría una forma de mover las clases a los proyectos con los que se relacionan o al menos usar una estructura de carpetas para ayudar en la organización.

Supongo que una opción sería usar el mismo espacio de nombres en todos los otros proyectos como lo utiliza el proyecto principal, pero no soy un gran admirador de ese enfoque b/c este no es el enfoque que que normalmente tomamos al definir nuestro espacio de nombres.

Supongo que al menos podríamos crear subcarpetas dentro de las carpetas M/V/C y no llevar los nombres de las carpetas a los espacios de nombres. Supongo que las clases se pueden encontrar?

Algunos antecedentes sobre nuestro proyecto: Es un sitio web de cara al público que tiene muchas transacciones comerciales que el usuario puede realizar (aproximadamente 50-60). Cada transacción tiene una serie de páginas web por las que el usuario navega para cumplir los diferentes servicios proporcionados por el sitio. Estamos utilizando un solo controlador para cada transacción (se han discutido largamente si deberíamos tener un controlador definido para cada transacción o si deberíamos usar una agrupación de mayor nivel y, por lo tanto, reducir la cantidad de controladores, pero cierta información que tenemos encontrado en la web (http://codebetter.com/blogs/ian_cooper/archive/2008/12/03/the-fat-controller.aspx) nos llevó a esta decisión.)

¿Cuáles son algunas recomendaciones? ¿Han resuelto otros este problema de una manera que les satisfaga?

Gracias Jon.

+0

un vistazo a FubuMVC para com aplicaciones web pueden adoptar cualquier postura. ASP.NET MVC es débil en cuanto a capacidad de compilación. –

Respuesta

0

Siempre eliminar la carpeta "modelos" y hacer referencia a las bibliotecas de clases separadas que representan mis capas de lógica de negocio y capas de acceso a datos. También tengo algunas soluciones donde mis controladores se mantienen en proyectos separados desde mi punto de vista. Estoy de acuerdo en que en aplicaciones más grandes, el modelo de proyecto único es inapropiado. Incluso en aplicaciones más pequeñas, especialmente cuando el código del modelo debe compartirse con otras aplicaciones, colocar clases de modelo en el proyecto MVC real es una mala idea.

+0

Separar sus clases es bastante bueno, sin embargo, debe mantener los modelos para su proyecto de Mvc que son diferentes de los modelos de dominio. –

3

Las áreas son compatibles con Asp.Net MVC2.

Scott Gu tiene un blog que habla sobre el Area Support here.

De su post.

Cada área puede ser implementado como un proyecto ASP.NET MVC separada que puede entonces ser referenciado por la aplicación principal .Esto ayuda a gestionar la complejidad en la construcción de una aplicación grande y facilita múltiples equipos que trabajan juntos en una sola aplicación juntos

Cuestiones relacionadas