2014-03-09 3 views
0

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

Мой вопрос есть. 1. Поскольку моя бизнес-логика включает сохранение нескольких доменов или доступ ко многим объектам домена для целей проверки, я могу передать репозиторий внутри метода службы или получить доступ к DIContainer. 2. В случае работы A я создам List (классы спецификаций, которые содержат проверку) и перейдет к услугам домена из прикладного уровня. Поэтому моя служба домена проверяет и выполняет бизнес-логику. 3. Может ли служба домена использовать CRUD-операцию сама по себе.

Я действительно запутался, где можно провести линию между службой приложений и службой домена.

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

С уважением Раджеш Kumar.C

ответ

0

Ответ здесь: http://gorodinski.com/blog/2012/04/14/services-in-domain-driven-design-ddd/

На самом деле эти правила: объекты 1) домена сделать работу 2), если в какой-либо функции больше предприятий участвуют, изменились - служба домена может быть решением 3) нет, уровень домена не должен знать ничего о: транзакции, сохранении, блокировке и т. д., ни один из них не должен загружать объекты ... если вам нужно что-то подобное, используйте INeedSomeStuffFromRepo. Интерфейс определен в доменном слое, реализация находится внутри приложения. Сервисы. Таким образом, вы также можете блокировать doi, т. Е. IExecuteThisFncToLockBeforeManipulatingWithAnObject 4) сохранение, транзакция находится в стороне приложения. я использую постоянство по достижимости, поэтому даже если у меня есть совокупность, сущность с другими связанными объектами, достаточно сохранить родителя ...