Контроллеры в моем веб-приложении ASP.NET MVC начинают немного раздуваться бизнес-логикой. Примеры в Интернете показывают простые действия контроллера, которые просто вытаскивают данные из репозитория и передают его в представление. Но что, если вам нужно также поддерживать бизнес-логику?
Скажем, например, действие, выполняющее заказ, также необходимо отправить электронное сообщение. Я придерживаюсь этого в контроллере и копирую/вставляю эту логику в любые другие действия, которые также выполняют заказы? Моей первой интуицией было бы создать такую услугу, как OrderFulfillerService, которая позаботится обо всей этой логике и вызовет действие контроллера. Однако для простых операций, таких как получение списка пользователей или заказов из базы данных, я хотел бы напрямую взаимодействовать с репозиторием, вместо того, чтобы этот вызов был обернут службой.
Является ли это приемлемым шаблоном проектирования? Действия контроллера вызывают услуги, когда им нужна бизнес-логика и репозитории, когда им просто нужен доступ к данным?