То, что вы называете доменными службами в вашем вопросе, - это то, что я бы назвал прикладными службами.Этот тип путаницы в отношении трех различных типов услуг (приложения, домен и инфраструктура) приводит к тому, что термин «Задачи» используется в «Кто может мне помочь»?(вместо служб приложений).
Вообще говоря, я рассматриваю доменные службы как действия / поведения внутри домена, которые не принадлежат какой-либо отдельной сущности - это в значительной степени соответствует описанию в книге DDD Эванса.Прикладные сервисы - это скорее уровень / фасад оркестрации в домене, который позволяет приложению взаимодействовать с доменом, не требуя полной информации о том, как он работает.
Поэтому я считаю, что вам нужен уровень сервисов приложенийудалить наворот с ваших контроллеров.Это тот подход, который показан в WCHM, и тот, которым я сейчас следую в своих приложениях.
С точки зрения того, где они должны жить - я бы сказал, что они должны быть в их собственном проекте.Если вы относитесь к этому по-пуристски, контракты также должны заключаться в отдельную сборку, что означает, что, если вы хотите, вы можете удалить все знания домена из ваших контроллеров.Тем не менее, подход WCHM помещает контракты в проект домена и позволяет контроллерам знать объекты.Некоторые люди жалуются на это, но это просто компромисс.
Надеюсь, это поможет Джону