номер
Первый способ отличить Доменную модель от репозиториев, которые она содержит, - подумать, что делает репозиторий.
По сути, репозиторий просто инкапсулирует кусок кода доступа к данным таким образом, что он предоставляет заданный интерфейс, чтобы программист мог легко обмениваться различными методами хранения и, например, тестировать другой код независимо от проблем базы данных.
Модель предметной области, напротив, содержит все необходимые репозитории для данного приложения. Поэтому сразу очевидно, что это совсем другой зверь.
Гораздо крупнее зверя.
Модель предметной области будет также включать в себя другой код и классы, такие как Модели, которые передаются в Представления через Контроллеры (в парадигме MVC).
Школа мысли настаивает на том, что модель предметной области должна находиться в собственной библиотеке классов. Эта школа мысли против использования папки Model в проекте MVC по умолчанию. Я согласен с этим и обычно удаляю его.
Модель домена моделирует домен. Он отличается от моделей, передаваемых каждому представлению, которые на самом деле просто представляют данные, необходимые представлению, в отличие от моделирования конкретной бизнес-задачи, содержащей репозитории и службы и т. Д.
Я думаю, что ваш вопрос отличный, потому что он решает проблему, о которой очень легко запутаться, если вы не знаете, что стоит за ними.
Что было первым: курица или яйцо? Ответ: ни один. На первом месте стоит вопрос.
DDD:
Эти концепции являются частью доменно-ориентированного проектирования, которое связано не столько с конкретной технологической реализацией, сколько с набором руководств по стандартизации понимания и моделирования сложных областей, которые необходимо преобразовать в программное обеспечение.
Одна из замечательных особенностей MVC - это то, что он позволяет вам использовать что-то вроде доменного дизайна. В веб-формах ASP.NET, напротив, вы гораздо более ограничены в применении хороших принципов проектирования.
Т.е. MVC позволяет спроектировать ваше приложение таким образом, чтобы представление домена инкапсулировалось в бит M MVC.
В конце концов, вам решать, как далеко вы зайдете с битом M. Это может быть просто папка Models, или вы можете преобразовать ее в свою собственную библиотеку классов и изменить ее в соответствии с вашими пожеланиями, внедрить лучшие методы DDD или что-то еще, что вам нужно.