Я не верю, что он принадлежит контроллеру, потому что, как только он там встроен, он не может выйти.
Я думаю, что в MVC должен быть вставлен еще один промежуточный уровень: сервисный уровень, который отображает варианты использования. Он содержит бизнес-логику, знает о единицах работы и транзакциях и имеет дело с объектами модели и персистентности для выполнения своих задач.
Контроллер имеет ссылку на сервис, который ему необходим для выполнения сценария использования. Он беспокоится о демаршалинге запросов в объекты, с которыми может работать служба, вызывает службу и отправляет ответ для отправки обратно в представление.
При таком расположении услуга может использоваться сама по себе, даже без пары контроллер / просмотр. Это может быть локальный или удаленный объект, упакованный и развернутый любым удобным для вас способом, с которым работает контроллер.
Контроллер теперь становится более тесно связанным с видом. В конце концов, контроллер, который вы будете использовать для настольного компьютера, скорее всего, будет отличаться от контроллера для веб-приложения.
Я думаю, что этот дизайн более ориентирован на обслуживание.