Домен Driven Design книги ( быстро версия свободно доступна здесь ) может дать вам понимание этого.
В двух словах, они предлагают следующий подход: объекты модели пересекаются от уровня модели до уровня просмотра без шва (это может быть непросто, если вы используете статические типизированные языки или другие языки на клинете / сервере, но это тривиально на динамическом из них). Кроме того, службы должны использоваться только для выполнения действий, которые не принадлежат самим объектам модели (или когда у вас есть действие, которое включает множество объектов модели).
Кроме того, бизнес-логика должна быть помещена в уровень модели (сущности, службы, объекты значений), чтобы предотвратить известную модель анемичного домена антишаблон.
Это другой подход. Если вас это устраивает, это во многом зависит от команды, от того, сколько написано кода, сколько тестового покрытия у вас есть, сколько времени занимает проект, если ваша команда гибкая или нет, и так далее. Проект, управляемый доменом, быстро обсуждает это еще дальше, и любое решение будет гораздо менее рискованным, если вы хотя бы сначала изучите его (получение оригинальной книги от Эрика Эванса поможет, если вы решите углубиться в подробности).