En MVC, el Modelo, no es solo un DTO o un conjunto de Gerentes / Servicios, está destinado a representar los conceptos que su aplicación está modelando. Puede pensar en esto como todo el dominio o la lógica empresarial, incluidos el estado y los comportamientos. Ahora dado que sabemos que el propósito del controlador se vuelve un poco más claro. Su trabajo es simplemente traducir comandos al Modelo y el resultado nuevamente a las vistas. Esto generalmente se realiza en forma de ViewModels que son diferentes pero a menudo se confunden con el Modelo en MVC.
Si no tiene un Modelo bien definido, es posible que haya llegado al punto en que la mayor parte de esa lógica ahora reside en los Controladores. En este punto, para comenzar a reducir el tamaño de sus controladores, puede comenzar a recuperar esta lógica en el administrador o en los objetos de servicio. Estos servicios generalmente regresan y operan en objetos DTO / Entity. Luego, el controlador se convierte en la capa de mapeo entre estos servicios y los Modelos de vista. Para algunos buenos consejos sobre mapeo, eche un vistazo a este artículo. Los amigos no permiten que sus amigos usen AutoMapper .
En cuanto a sus preguntas, la primera depende mucho de sus aplicaciones. Tendrá que refactorizar en el camino, lo que debería ser más evidente una vez que haya eliminado la lógica de sus controladores. En cuanto a las pruebas, no hay problema en crear instancias de modelos dentro de los servicios; sin embargo, si encuentra que las pruebas son difíciles, probablemente sea solo una señal de que necesita dividir el servicio en partes más pequeñas, cada una con una sola responsabilidad.