Вы, вероятно, должны сначала сосредоточиться на данных: какие данные есть, и какие данные должны оставаться согласованными.Затем сконцентрируйтесь на поведении этих данных.
В финансовом домене, если у меня будет глобальная служба "AccountCreation" или "CheckingAccountCreation", "CreditcardAccountreation" и т. Д.
В этом примере я бы сказал, что у вас есть услуга «учетная запись», потому что у вас явно есть несколько учетных записей - и вы, вероятно, должны убедиться, что, например, вы не дублируете номера учетных записей, применяете правила противодействия мошенничеству,управлять рабочим процессом создания и т. д.
В ваших примерах выявляются некоторые варианты поведения: создайте учетную запись, создайте учетную запись кредитной карты.Соответственно, это будут команды, которые вы отправляете в службу, потому что они приводят к мутации данных, которыми владеет служба.
Если вы добавите службу «клиент», это будет отличаться от службы учетных записей.: он не обязательно должен быть совместим со службой учетных записей, просто чтобы иметь ссылку из учетных записей на клиентов по идентификатору.
Как правило, у вас нет общего поведения, которое затрагивает обе части - обновление данных оклиент не должен трогать данные своих учетных записей (напрямую), а обновление учетной записи не меняет сведений о клиенте.
В одной службе могут быть бизнес-правила, которые изменяют другую, например учетную запись.служба прослушивания «клиент стал студентом», объявленной службой поддержки, а затем выполняющая внутреннюю обработку.