DDD использовать событие или сервис? - PullRequest
1 голос
/ 12 ноября 2019

Привет, я новичок в дизайне DDD и пытаюсь разработать мое первое приложение, используя этот шаблон, работающий в C #

. В моем приложении у меня есть совокупный контракт, в котором есть дочерние активы, когда актив добавляется или рассчитываетсяя должен выполнить учетную операцию в другой совокупной учетной записи и обеспечить ее в бизнес-логике.

Должен ли я создать службу домена, которая гарантирует, что каждая операция в активах контракта вызовет операцию учетной записи, и вызвать эту службу на уровне приложенийотправка коллекции учетной записи лица. Или я должен внедрить репозиторий в эту службу, загрузить список учетных записей и сохранить изменения в списке учетных записей и операций.

Или даже заставить методы в объекте актива вызвать событие, которое вызывает изменения учетной записи. Если это правильный подход, дескриптор события должен находиться в домене или приложении? Если в домене должен ли обработчик в объекте учётной записи вносить изменения через введенный репозиторий?

Я немного запутался

1 Ответ

0 голосов
/ 12 ноября 2019

Давайте сначала рассмотрим последний вопрос. События предназначены для вещей, которые могут быть выполнены асинхронно, и в этом случае асинхронность не будет работать. Каждый раз, когда агрегат сохраняется, он должен удовлетворять всем бизнес-правилам, поэтому вам приходится иметь дело с активом и учетной записью одновременно.

Службы следует использовать экономно. Они работают более чем на одном AR, где ни один не имеет принудительных отношений с другими. В вашем случае Контракт владеет всеми другими вовлеченными лицами, поэтому вся работа должна выполняться внутри метода Контракта. Если для этого требуется хранилище, то включите его в контракт.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...