Я думаю, что меня начинает смущать работа контроллера в MVC.
У меня есть сервис, который предоставляет пять функций:
- список пакетов в очереди
- получить пакет
- удалить пакет
- принять пакет
- отклонить пакет
Мой контроллер ASP.NET MVC зависит от этой службы и обычно может выполнять вызов службы для действия. Я пока доволен.
Вторая часть затем создает результат ViewModel. Если я сделаю это внутри контроллера, у контроллера теперь есть расширяющийся список зависимостей - каждое добавленное действие увеличивает зависимости для построения модели представления, и все они наследуются контроллером. Мне это очень не нравится. Я создаю этот контроллер, который зависит от N различных построителей модели представления, но использую только один из них для каждого запроса.
Итак, я подумал о том, чтобы вытащить все это и применить фильтры действий, специфичные для каждой модели представления. Я еще этого не делал, но вроде нормально.
У меня возникает вопрос: какова ответственность контролера? Если я в конечном итоге вытягиваю построение модели представления в фильтры, мой контроллер делает немного больше, чем заставляет маршрут выполнять вызов службы (и предоставляет плагин фильтра). Если вместо этого я оставлю свой контроллер ответственным за построение каждой модели представления, это станет беспорядком.
Похоже, я почти хочу создать экземпляр действия для каждого запроса, а не контроллера, и я просто злоупотребляю фильтрами, чтобы добиться этого?