A lógica de negócios não deve estar contida em controladores. Os controladores devem ser o mais magros possíveis, de preferência, seguir o padrão:
- Encontrar entidade de domínio
- Agir na entidade de domínio
- Prepare os dados para visualizar / retornar resultados
Além disso, os controladores podem conter alguma lógica de aplicação.
Então, onde coloco minha lógica de negócios? No modelo.
O que é modelo? Essa é uma boa pergunta. Consulte o artigo Padrões e Práticas da Microsoft (parabéns a AlejandroR pelo excelente achado). Aqui, existem três categorias de modelos:
- Modelo de visualização : este é simplesmente um saco de dados, com lógica mínima, se houver, para passar dados de e para visualizações, contendo validação de campo básica.
- Modelo de domínio : modelo gordo com lógica de negócios, opera em uma ou várias entidades de dados (ou seja, entidade A em um determinado estado do que ação na entidade B)
- Modelo de dados : modelo com reconhecimento de armazenamento, a lógica contida em uma única entidade se relaciona apenas a essa entidade (ou seja, se o campo a, então, o campo b)
Claro, MVC é um paradigma que vem em diferentes variedades. O que eu descrevo aqui é MVC ocupando apenas a camada superior, vide este artigo na Wikipedia
Hoje, MVC e model-view-presenter (MVP) são padrões de design de Separation of Concerns que se aplicam exclusivamente à camada de apresentação de um sistema maior. Em cenários simples, o MVC pode representar o projeto principal de um sistema, alcançando diretamente o banco de dados; no entanto, na maioria dos cenários, o controlador e o modelo no MVC têm uma dependência flexível em um serviço ou camada / camada de dados. Isso é tudo sobre arquitetura cliente-servidor