Как мне структурировать простое приложение ASP.NET MVC?

Я читал несколько вещей о ASP.NET MVC, SOLID и т. Д., И я пытаюсь найти простой «рецепт» для небольших и средних приложений ASP.NET MVC, который бы соединил эти концепции; проблема, которая меня больше всего беспокоит, - это слишком сложные контроллеры, похожие на файлы с выделенным кодом в веб-формах, со всеми типами бизнес-логики.

Я рассматриваю следующую архитектуру для небольшого приложения, управляемого данными:

Контроллеры: обрабатывают только запросы, вызывают соответствующую службу и возвращают результат действия в View;Модели: POCO, обрабатывают всю бизнес-логику, авторизацию и т. Д. Зависит от репозиториев, полностью игнорируя постоянную инфраструктуру.Репозитории: внедритьIRepository<T>, используйте внедрение зависимостей и где мой код БД будет находиться; только получает и возвращает POCO.

Я рассматриваю возможность предоставления услуг между контроллерами и моделями, но если они будут просто передавать вызовы методов вперед, я не уверен, насколько это было бы полезно.

Наконец, должны быть модульные тесты, охватывающие код модели, и модульные тесты, охватывающие код репозитория (если возможно, следуя "красно-зеленой" практике)

Мысли?