vista net mvc modelo framework example ejemplos controlador asp model-view-controller frameworks

model-view-controller - net - mvc en python



Bajo un marco MVC, ¿qué estructura de directorio esperarían otros desarrolladores? (4)

En general, Frameworks MVC tienen una estructura que se parece a algo así como:

/models /views /controllers /utils

Sin embargo, en un conjunto de aplicaciones web, he decidido que agrupando todos los modelos, vistas y controladores probablemente no sería lo mejor para la claridad, a menos que trate el sistema como una sola aplicación en lugar de un conjunto de aplicaciones. Sin embargo, algunas cosas atan todas las "aplicaciones" juntas, como la noción de usuarios y roles de usuario.

Entonces tengo tres soluciones posibles:

(1) Haga lo que realmente no quiero hacer, y mantenga todos los modelos, vistas y controladores juntos, independientemente de la aplicación a la que pertenezca. Esto es tratar el conjunto de aplicaciones como una aplicación única, ya que están unidas por varios hilos comunes, incluidos los usuarios.

(2) Agrupe el código por aplicación.

/app1 /models /views /controllers /utils /app2 /models /views /controllers /utils

(3) Agrupe el código por tipo, permitiendo que el código de la herramienta se comparta entre todas las aplicaciones.

/models /app1 /app2 /views /app1 /app2 /controllers /app1 /app2 /utils

¿Hay alguna opción que extrañé? ¿Cuál sería el esquema más lógico para futuros desarrolladores? Personalmente prefiero 2 y 3, pero quizás la mayoría de las personas esperan 1.


2 es un buen comienzo. Debería considerar tener una carpeta común en la que pueda almacenar los modelos, vistas y utilidades comunes que utilizan todas las aplicaciones en el conjunto de aplicaciones.

/app1 /models /views /controllers /utils /app2 /models /views /controllers /utils /common /models /views /utils


Parece que 2) sería su mejor opción, suponiendo que desea alguna separación de aplicaciones. También podría tener una carpeta "/ common" en el nivel "/ app #" para recursos compartidos en todas las aplicaciones ... como una clase de utilidad compartida o lo que sea.


Por lo general, agrupo código por elemento, por lo que en su caso, la agrupación por aplicación tendría más sentido para mí. La razón es que si quiero trabajar en una característica en particular, no debería tener que buscar en tres carpetas separadas buscando los componentes que necesito. Si agrupa por la función de alto nivel, sabrá que todo lo que necesita es estar juntos.


Si sus aplicaciones comparten datos, podría tener sentido (para mí) agrupar los modelos.

Sin embargo, para las vistas y los controladores, probablemente tenga más sentido mantenerlos separados, ya que supongo que tienen una lógica de negocios y presentaciones separadas.

Además, si sus aplicaciones se mantienen por separado en el control de versiones (está utilizando el control de versiones, ¿verdad? :), eso dificulta la implementación de la primera o la tercera opción.

Entonces, considerando todo, probablemente separaría las aplicaciones en el nivel superior, como en el segundo ejemplo.