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