Como devo estruturar um aplicativo ASP.NET MVC simples?

Eu tenho lido algumas coisas sobre o ASP.NET MVC, SOLID e assim por diante, e estou tentando descobrir uma "receita" simples para aplicativos de pequeno e médio porte do ASP.NET MVC que reunissem esses conceitos; o problema que mais me preocupa é acabar com controladores muito complexos e que são como arquivos code-behind em formulários da web, com todo tipo de lógica de negócios.

Estou considerando a seguinte arquitetura, para um pequeno aplicativo orientado a dados:

Controladores: apenas manipulam solicitações, chamam um serviço apropriado e retornam o resultado da ação para a Visualização;Modelos: POCO, lida com toda a lógica de negócios, autorização etc. Depende dos repositórios, totalmente ignorante da infraestrutura de persistência.Repositórios: implementarIRepository<T>, use injeção de dependência e é onde o meu código db residirá; somente recebe e retorna POCO.

Estou pensando em ter serviços entre os controladores e os modelos, mas se eles apenas repassarem as chamadas de método, não tenho certeza de quão útil seria.

Finalmente, deve haver testes de unidade que cubram o código do modelo e testes de unidade + integração que cobrem o código do repositório (seguindo a prática "vermelho-verde", se possível)

Pensamentos?

questionAnswers(4)

yourAnswerToTheQuestion