La lógica empresarial no debe estar contenida en controladores. Los controladores deben ser lo más delgados posible, idealmente seguir el patrón:
- Buscar entidad de dominio
- Actuar sobre la entidad de dominio
- Preparar datos para ver / devolver resultados
Además, los controladores pueden contener cierta lógica de aplicación.
Entonces, ¿dónde pongo mi lógica empresarial? En modelo.
¿Qué es el modelo? Esa es una buena pregunta. Consulte el artículo Patrones y prácticas de Microsoft (felicitaciones a AlejandroR por su excelente hallazgo). Aquí hay tres categorías de modelos:
- Modelo de vista : esto es simplemente una bolsa de datos, con una lógica mínima, si la hay, para pasar datos desde y hacia las vistas, contiene validación de campo básica.
- Modelo de dominio : modelo gordo con lógica comercial, opera en una o varias entidades de datos (es decir, la entidad A en un estado dado que la acción en la entidad B)
- Modelo de datos : modelo de almacenamiento, la lógica contenida dentro de una sola entidad se relaciona solo con esa entidad (es decir, si el campo a, entonces el campo b)
Por supuesto, MVC es un paradigma que se presenta en diferentes variedades. Lo que describo aquí es MVC que ocupa solo la capa superior, vea este artículo en Wikipedia
Hoy en día, MVC y un modelo-vista-presentador (MVP) similar 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. En escenarios simples, MVC puede representar el diseño principal de un sistema, llegando directamente a la base de datos; sin embargo, en la mayoría de los escenarios, el controlador y el modelo en MVC tienen una dependencia flexible de una capa / nivel de servicio o de datos. Todo esto se trata de la arquitectura cliente-servidor