Это, вероятно, зависит от сложности вашего приложения и требует некоторого суждения, которое приходит с опытом. Короткий ответ таков: если ваш проект является чем-то большим, чем довольно простым, то лучше всего поместить свою логику в классы предметной области.
Более длинный ответ:
Если вы разместите свою логику в слое обслуживания, вы аффективно будете следовать шаблону сценария транзакции и получите модель анемичного домена . Это может быть действительный маршрут, но обычно он лучше всего работает с простыми и небольшими проектами. Проблема заключается в том, что уровень сценария транзакции (уровень службы) становится все сложнее поддерживать по мере роста.
Таким образом, альтернатива состоит в том, чтобы создать богатую модель предметной области, которая содержит в себе логику. Хранение логики вместе с классом, к которому она применяется, является ключевой частью хорошего дизайна ОО, и в сложном проекте это довольно важно. Обычно это сначала требует немного больше усилий и усилий, поэтому для очень простых проектов люди иногда используют шаблон сценария транзакции.
Если вы не уверены в том, что делать дальше, это обычно не слишком сложная задача, чтобы реорганизовать вашу логику, чтобы переместить ее с уровня обслуживания в домен, но вам нужно сделать вызов достаточно рано, чтобы работа не была слишком большой.
Вопреки одному из ответов, использование классов POCO не означает, что в ваших классах домена не может быть бизнес-логики. POCO - это не применение структур, специфичных для фреймворка, к классам вашего домена , таких как методы и интерфейсы, специфичные для определенного ORM. Класс с некоторыми функциями для применения бизнес-логики, очевидно, все еще является Plain-Old-CLR-Object.