Взгляните на луковичную архитектуру, она показывает хорошую установку для DDD. решение. (Посмотрите на мой комментарий ниже - используйте вместо этого вертикальные ломтики, если можете - стоимость лука не кажется оправданной после многих лет использования)
По сути, вся модель предметной области и интерфейсы для доменных служб считаются основными. Слои зависят только от слоев над ними, которые ближе к сердцевине. Их фактическая реализация осуществляется инфраструктурой.
Проект домена не должен ссылаться на проект инфраструктуры. Если домену нужно что-то использовать, его следует определить как интерфейс внутри домена и реализовать в проекте инфраструктуры.
В конечном итоге ваши интерфейсы - это то, что определяет ваше приложение. Логика того, как это реализуется, вынесена вовне. Поэтому я ожидаю, что у вас будут сборки с моделями домена и службами домена, интерфейс (например, MVC и т. Д.), А затем сборка инфраструктуры, которая реализует такие вещи, как NHibernate для предоставления данных и т. Д.
Вы можете увидеть различные примеры, реализующие архитектуру, в различных частях связанной статьи. Самый простой из них находится здесь
Вы можете увидеть связанные с этим вопросы здесь
Основное преимущество состоит в том, что в основном инфраструктурные проблемы будут меняться чаще всего. Новые технологии уровня данных, новое хранилище файлов и т. Д. Кроме того, ваш основной домен должен быть достаточно стабильным, поскольку он не реализует ничего, просто определяя контрактом (интерфейсами) то, что ему требуется. Помещая проблемы реализации в одно место, вы сводите к минимуму количество изменений, которые потребуются для ваших сборок.
person
GraemeMiller
schedule
15.09.2013