В MVC Модель - это не просто DTO или набор Менеджеров / Сервисов, она предназначена для представления концепций, которые моделирует ваше приложение. Вы можете думать об этом как о целой области или бизнес-логике, включая состояние и поведение. Теперь, учитывая, что мы знаем, что назначение контроллера становится немного понятнее. Его задача - просто переводить команды в модель и результат обратно в представления. Обычно это делается в виде ViewModels, которые отличаются, но часто путают с моделью в MVC.
Если у вас нет четко определенной Модели, то вы, возможно, дошли до того, что большая часть этой логики теперь находится в самих контроллерах. На данный момент, чтобы начать уменьшать размер ваших контроллеров, вы можете начать перетягивать эту логику обратно в объекты менеджера или службы. Эти сервисы обычно возвращают и работают с объектами типа DTO / Entity. Затем контроллер становится уровнем отображения между этими службами и моделями представления. Несколько хороших советов по составлению карт можно найти в этой статье. Друзья не позволяют друзьям использовать AutoMapper .
Что касается ваших вопросов, первый зависит от ваших приложений. Вам нужно будет выполнить рефакторинг по пути, который должен стать более очевидным после удаления логики из ваших контроллеров. Что касается тестирования, то нет проблем создавать экземпляры моделей внутри сервисов, однако, если вам сложно тестировать, это, вероятно, просто признак того, что вам нужно разбить сервис на более мелкие части, каждая из которых несет единую ответственность.