DDD и постоянство реализации

Я впервые загружаюсь в DDD (в .Net), так как я перестраиваю некоторые основные компоненты устаревшего корпоративного приложения.

Что-то, что я хочу прояснить, это то, как мы реализуем упорство в надлежащей архитектуре DDD?

Я понимаю, что сами домены - это непрозрачность, и их следует разрабатывать с использованием "вездесущего языка" и, конечно же, не принуждать к ограничениям ЦАП месяца или даже физической базы данных.

Я исправлю, что интерфейсы репозитория находятся в рамках сборки домена, но Репозитарий Реализации существует в пределах уровня сохранения? Уровень persistence содержит ссылку на слой Domain, но не наоборот?

Где мои действительные методы репозитория (CRUD) вызывается из?

Ответы

Ответ 1

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

Да, это очень хороший подход.

Где мои действительные методы репозитория (CRUD) вызывается из?

Возможно, неплохо не думать о CRUD-терминах, потому что он слишком ориентирован на данные и может привести вас к общей ловушке репозитория. Репозиторий помогает управлять средой и концом жизни объектов домена. Фабрики часто несут ответственность за начало. Имейте в виду, что, когда объект восстанавливается из базы данных, он находится на стадии среднего возраста с точки зрения DDD. Вот как выглядит код:

// beginning 
Customer preferredCustomer = CustomerFactory.CreatePreferred();
customersRepository.Add(preferredCustomer);

// middle life
IList<Customer> valuedCustomers = customersRepository.FindPrefered();

// end life
customersRepository.Archive(customer);

Вы можете вызвать этот код непосредственно из приложения. Возможно, стоит скачать и посмотреть на Evan DDD Sample. Элемент работы обычно используется для обработки транзакций и абстрагирования выбора ORM.

Ответ 2

Посмотрите, что Steve Bohlen должен сказать на субъект. Код для презентации можно найти здесь.

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

Ответ 3

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

Я не согласен здесь, скажем, что система состоит из следующих слоев:

  • Уровень представления (формы выигрыша, веб-формы, asp.net MVC, WPF, php, qt, java, ios, android и т.д.).
  • Бизнес-уровень (иногда называемый менеджерами или службами, логика идет здесь)
  • Уровень доступа к ресурсам (вручную или ORM)
  • Ресурс/хранилище (РСУБД, NoSQL и т.д.)

Предположение здесь состоит в том, что чем выше вы более волатильный, тем выше уровень (наивысший из которых является представлением, а наименьший - ресурсом/хранилищем). Именно из-за этого вам не нужен уровень доступа к ресурсам, ссылающийся на бизнес-уровень, это наоборот! Бизнес-уровень ссылается на уровень доступа к ресурсам, вы вызываете DOWN не UP!

Вместо этого вы помещаете интерфейсы/контракты в свою собственную сборку, они вообще не имеют никакого смысла в бизнес-уровне.