¿Cómo debo estructurar una aplicación ASP.NET MVC simple?

He estado leyendo algunas cosas sobre ASP.NET MVC, SOLID, etc., y estoy tratando de encontrar una "receta" simple para aplicaciones ASP.NET MVC de pequeñas a medianas que junten estos conceptos; El problema que más me preocupa es terminar con controladores que son demasiado complejos y que son como archivos de código subyacente en formularios web, con todo tipo de lógica de negocios en ellos.

Estoy considerando la siguiente arquitectura, para una pequeña aplicación basada en datos:

Controladores: solo manejan solicitudes, llaman a un servicio apropiado y devuelven el resultado de la acción a la Vista;Modelos: POCO, manejan toda la lógica de negocios, autorización, etc. Depende de los repositorios, ignoran totalmente la infraestructura de persistencia.Repositorios: implementarIRepository<T>, usa la inyección de dependencia y es donde residirá mi código db; solo recibe y devuelve POCO.

Estoy considerando tener servicios entre los controladores y los modelos, pero si solo van a pasar las llamadas al método, no estoy seguro de cuán útil sería.

Finalmente, debe haber pruebas unitarias que cubran el código del modelo y pruebas de integración unidad + que cubran el código del repositorio (siguiendo la práctica "rojo-verde", si es posible)

Pensamientos?

Respuestas a la pregunta(4)

Su respuesta a la pregunta