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