2012-06-12 3 views
2

Я участвую в проекте создания webapp для того, что можно описать как механизм правил, мы используем DDD-подход для захвата и моделирования домена и функций.Сохранение данных конкретного приложения в приложении DDD

Но как насчет данных, связанных с приложением, так как это веб-приложение, будет значительная часть вокруг security/user-mgmt, log mgmt. и т. д., разные элементы, которые не являются частью домена, но будут данные, требующие управления для них. Начиная с первоначального чтения парадигмы DDD, мы получаем справедливое представление о модели домена и постоянстве через репозитории. Конкретные проблемы, такие как security, txn mgmt и т. Д., Должны содержаться в слое Application Service - это то, что я понимаю.

В этом месте, где/настойчивость конкретных данных приложения? Должны ли они также быть смоделированы как разные агрегаты и быть частью системы аналогичным образом или должны быть структурированы по-другому (классы менеджера, говорящие с DAO - как сценарий транзакции)?

ответ

4

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

Я думаю, что эти вещи не должны загрязнять модель домена. Безопасность или ведение журнала - это часть уровня инфраструктуры. И настойчивость таких вещей должна управляться уровнем инфраструктуры. Рассмотрите вопрос о регистрации: вы можете регистрироваться в файлах или в базе данных. И вы должны иметь возможность легко переключаться между типами сохранения журнала. То же самое с базой данных безопасности или ActiveDirectory? Эти вещи изменяются независимо от настойчивости модели домена, поэтому вы не должны смешивать их.

+0

Итак, я думаю, что с точки зрения приложения это больше зависит от зависимости между разными слоями и упаковкой. Итак, допустим, у вас есть SecurityManagerImpl, который будет в инфраструктурном уровне, и прикладной уровень будет использовать его. Но вопрос в том, где будут иметь интерфейсы, определенные для этого SecurityManagerImpl? Соглашение не должно иметь зависимость b/w Application to Infrastructure layer? также его не только SecurityManager, но и целый набор моделей, таких как UserModel и т. д., который формирует свой собственный домен, если вы видите – redzedi

+2

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

Смежные вопросы