Puño de todos:
creo que estás mezclando el patrón MVC y los principios de diseño basados en n niveles.
El uso de un enfoque MVC no significa que no deba superponer su aplicación.
Puede ser útil si ve MVC más como una extensión de la capa de presentación.
Si coloca el código de no presentación dentro del patrón MVC, muy pronto podría terminar en un diseño complicado.
Por lo tanto, sugeriría que coloque su lógica empresarial en una capa empresarial separada.
Solo eche un vistazo a esto: artículo de Wikipedia sobre arquitectura multinivel
Dice:
Hoy en día, MVC y un modelo similar de vista de presentador (MVP) son patrones de diseño de Separación de preocupaciones que se aplican exclusivamente a la capa de presentación de un sistema más grande.
De todos modos ... cuando se habla de una aplicación web empresarial, las llamadas desde la interfaz de usuario a la capa de lógica de negocios deben colocarse dentro del controlador (presentación).
Esto se debe a que el controlador realmente maneja las llamadas a un recurso específico, consulta los datos haciendo llamadas a la lógica de negocios y vincula los datos (modelo) a la vista apropiada.
Mud te dijo que las reglas de negocio entran en el modelo.
Eso también es cierto, pero mezcló el modelo (presentación) (la 'M' en MVC) y el modelo de capa de datos de un diseño de aplicación basado en niveles.
Por lo tanto, es válido colocar su negocio relacionado con la base de datos. reglas en el modelo (capa de datos) de su aplicación.
Pero no debe colocarlos en el modelo de su capa de presentación estructurada MVC, ya que esto solo se aplica a una interfaz de usuario específica.
Esta técnica es independiente de si utiliza un diseño controlado por dominio o un enfoque basado en script de transacción.
Déjame visualizar eso para ti:
Capa de presentación: Modelo - Vista - Controlador
Capa empresarial: lógica de dominio - lógica de aplicación
Capa de datos: repositorios de datos - capa de acceso a datos
El modelo que ve arriba significa que tiene una aplicación que usa MVC, DDD y una capa de datos independiente de la base de datos.
Este es un enfoque común para diseñar una aplicación web empresarial más grande.
Pero también puede reducirlo para usar una capa empresarial simple que no sea DDD (una capa empresarial sin lógica de dominio) y una capa de datos simple que escribe directamente en una base de datos específica.
Incluso podría soltar toda la capa de datos y acceder a la base de datos directamente desde la capa empresarial, aunque no lo recomiendo.
Ese es el truco ... Espero que esto ayude ...
[Nota:] También debe tener en cuenta el hecho de que hoy en día hay más de un "modelo" en una aplicación. Comúnmente, cada capa de una aplicación tiene su propio modelo. El modelo de la capa de presentación es específico de la vista, pero a menudo independiente de los controles utilizados. La capa empresarial también puede tener un modelo, llamado "modelo de dominio". Este suele ser el caso cuando decide adoptar un enfoque basado en el dominio. Este "modelo de dominio" contiene datos y lógica de negocios (la lógica principal de su programa) y generalmente es independiente de la capa de presentación. La capa de presentación generalmente llama a la capa empresarial en un determinado "evento" (botón presionado, etc.) para leer o escribir datos en la capa de datos. La capa de datos también puede tener su propio modelo, que generalmente está relacionado con la base de datos.
La pregunta es: ¿cómo encaja esto en el concepto MVC?
Respuesta -> ¡No lo hace!
Bueno, sí, pero no del todo.
Esto se debe a que MVC es un enfoque que se desarrolló a fines de la década de 1970 para el lenguaje de programación Smalltalk-80. En ese momento, las GUI y las computadoras personales eran bastante poco comunes y ni siquiera se había inventado la red mundial. La mayoría de los lenguajes de programación e IDE actuales se desarrollaron en la década de 1990. En ese momento, las computadoras y las interfaces de usuario eran completamente diferentes de las de la década de 1970.
Debes tener eso en cuenta cuando hables de MVC.
Martin Fowler ha escrito un muy buen artículo sobre MVC, MVP y las GUI de hoy.