Могут ли модель предметной области и репозитории находиться в отдельных dll?

Могут ли модель предметной области и репозитории находиться в разных dll?

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

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

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

Будем очень признательны за любые разъяснения, так как это уже какое-то время меня беспокоит, спасибо.


person Fikre    schedule 02.08.2010    source источник


Ответы (1)


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

В вашей модели предметной области не должны использоваться репозитории, в отличие от служб приложения. (Если объектам домена действительно необходимо использовать репозиторий, его следует внедрить из служб приложения. Некоторые люди возразят, что в этом нет необходимости - и я тоже так думаю).

Попробуйте взглянуть на это так: у вас есть служба приложения, которая является основным способом, которым ваш клиент / интерфейс / контроллер может использовать домен. Службы приложений определяют операции, которые могут выполняться в вашем приложении.

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

Хороший способ начать организовывать свое приложение таким образом - взглянуть на эту серию сообщений в блоге: http://jeffreypalermo.com/blog/the-onion-architecture-part-1/

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

Спросите, есть ли у вас вопросы.

person asgerhallas    schedule 03.08.2010
comment
Вся серия статей Джеффри Палермо обязательна к прочтению всем, кто серьезно задумывается о DDD в мире .NET. Я считаю, что Луковая архитектура - это отличная визуализация и практическое применение того, что Эванс описал в Голубой Библии. - person Joseph Ferris; 02.09.2010