Могут ли доменная модель и репозитории находиться в отдельных библиотеках? - PullRequest
4 голосов
/ 02 августа 2010

Может ли модель домена и репозитории находиться в отдельных библиотеках?

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

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

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

Любое разъяснение будет с благодарностью, так как это беспокоит меня некоторое время, спасибо.

1 Ответ

5 голосов
/ 03 августа 2010

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

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

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

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

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

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

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

...