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!
Вместо этого вы помещаете интерфейсы/контракты в свою собственную сборку, они вообще не имеют никакого смысла в бизнес-уровне.