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