В чем основное отличие между сущностями и совокупными корнями в проекте, управляемом доменом. Например, в инфраструктуре сущности, каково использование агрегатов, если я могу обеспечить целостность данных?Разница между сущностью и агрегатом в доменном дизайне
ответ
Определение довольно прямо вперед:
- Совокупные: В основном кластер объектов, которые создают четкую ссылку на корневой агрегате, так, когда вы ссылаетесь на корень, вы можете гарантировать целостность агрегатов в целом.
Агрегат - это образец в режиме управляемого доменом. Агрегат DDD представляет собой кластер объектов домена , который можно рассматривать как единое целое. Пример может быть порядком и его позициями, они будут отдельными объектами , но полезно обрабатывать заказ (вместе со своей строкой ) как единый агрегат.
Агрегат будет иметь один из его компонентов-компонентов, являющийся совокупностью корень . Любые ссылки извне агрегата должны поступать только в общий корень . Таким образом, корень может гарантировать целостность совокупности в целом.
Агрегаты - это основной элемент передачи данных - вы запрашиваете загрузку или сохранение целых агрегатов. . Транзакции не должны составлять .
DDD Агрегаты иногда путаются с классами сбора (списки, карт и т. Д.). Агрегаты DDD - это концепции домена (заказ, посещение клиники, плейлист ), а коллекции - общие. Агрегат часто будет содержать коллекцию mutliple вместе с простыми полями. Термин «совокупность» является общим и используется в различных контекстах (например, UML), и в этом случае он не относится к той же концепции, что и агрегат DDD .
- Сущность: В контексте модели данных, описывает структуру данных, независимо от сохраненной формы.
ЭДЙ решает проблемы, возникающие из наличия данных, хранящихся в многих формах. Например, рассмотрите бизнес, который хранит данные в реляционных базах данных, текстовых файлах, XML-файлах, электронных таблицах и . Это создает серьезные проблемы при моделировании данных, дизайн приложения и доступ к данным. При разработке ориентированного на данные приложения задачей является создание эффективного и поддерживаемого кода без ущерба для эффективного доступа к данным, хранения и масштабируемости. Когда данные имеют реляционную структуру, доступ к данным, память и масштабируемость очень эффективны, но писать эффективный и обслуживаемый код становится сложнее. Когда данные имеют структуру объекта, компромиссы меняются на противоположные. Написание эффективного и обслуживаемого кода приходит за счет эффективного доступа к данным, их хранения и масштабируемости.Даже если , если правильный баланс между этими компромиссами может быть найден, возникают новые проблемы , когда данные перемещаются из одной формы в другую. Модель данных сущностей решает эти проблемы, описывая структуру данных в терминах сущностей и отношений, которые являются независимо от любой схемы хранения. Это делает сохраненную форму данных нерелевантной для разработки и разработки приложений. И, поскольку сущности и отношения описывают структуру данных, так как это , которые используются в приложении (а не в его сохраненной форме), они могут развиваться по мере того, как приложение развивается.
Определение может отличаться, определение определено Martin Fowler и Microsoft. Надеюсь, это еще раз поясняет разницу.
С точки зрения перспективного развития домена DbContext
является реализация UnitOfWork, а DbSet<T>
- это реализация репозитория.
В этом отличие от DDD и EntityFramework. DDD предлагает иметь репозиторий на один корневой узел, но EntityFramework создает по одному для каждого объекта.
Итак, что представляет собой совокупный корень?
Предположим, что у нас есть социальная сеть и есть объектов like Post, Like, Comment, Tag. (Я полагаю, что вы можете себе представить отношения между этими объектами). Некоторые из объектов «Агрегатный корень»
Чтобы найти общий корень, я пытаюсь найти, какие сущности не могут жить без другого. Например, Like или Comment не могут жить без Почты. Затем Post является совокупным корнем, и нам нужен PostRepository или превратить объект Post в репозиторий (известная коллекция, например, предмет интерфейса). Операции CRUD для комментариев и комментариев (как и Post) должны оставаться в этом репозитории.
Хороший ответ и определение, гораздо более функциональное определение, а не мое определение теории. – Greg
«DDD предлагает иметь репозиторий на совокупность ...» отличная и недоиспользуемая концепция IMHO. –
@Mehmet Отличное описание. Именно картина у меня была из совокупных корней. Я думал, что это возможно с сущностями базы данных, сгенерированными с использованием структуры сущности, в отношении внешних ключей и первичных ключей. Было бы разумным позволить сущностной структуре генерировать объекты для проекта, управляемого доменом? или вручную построить один? ..... Наконец, как я могу сохранить агрегатные корни в базе данных? –
- 1. Слои в доменном дизайне
- 2. Проверка в доменном дизайне
- 3. Объекты в доменном дизайне
- 4. Сервис в доменном дизайне
- 5. Совокупные отношения в доменном дизайне
- 6. Вопрос о доменном дизайне
- 7. Binding DropdownList в доменном дизайне
- 8. Спецификация шаблона в доменном дизайне
- 9. Реактивное программирование в доменном дизайне
- 10. Роль служб в доменном дизайне
- 11. какая разница между сущностью и сущностью, установленной в dbms
- 12. Использование фабрик и интерфейсов в доменном дизайне
- 13. В чем разница между сущностью и dynamicEntitiy?
- 14. В чем разница между сущностью и классом?
- 15. Проблема корневого агрегата в доменном дизайне
- 16. Как насчет таблиц ссылок в доменном дизайне?
- 17. JAVA: Разница между сущностью и DTO
- 18. Разница между сущностью JPA и объектом Hibernate
- 19. Внедрение ограниченного контекста в доменном дизайне
- 20. Домены в доменном дизайне скрывают намерение?
- 21. Правильный способ получения агрегатов в доменном дизайне
- 22. Важность объектной модели в доменном дизайне
- 23. Сложная сложность корня в доменном дизайне
- 24. Любая хорошая книга о доменном дизайне?
- 25. Разница между видом и сущностью в хранилище данных GAE?
- 26. В чем разница между «сущностью» и «игровым объектом»?
- 27. Разница между ассоциативной сущностью и атрибутом ассоциативной связи?
- 28. Разница в дизайне WPF между дизайном и временем выполнения
- 29. Какая разница между представлением вида и контейнера в дизайне iOS?
- 30. Разница между объектом User и Account в дизайне социальной сети?
Да, немного ... спасибо @Greg за ваш ответ. –
Определение для обоих, к сожалению, используется взаимозаменяемо, что может сбивать с толку, но это то, что на самом деле означает каждый. – Greg