У кого-нибудь есть успех с шаблоном NWorkspace? - PullRequest
1 голос
/ 26 апреля 2011

Я только начал углубляться в свои первые эксперименты с Domain Drive Design и пользуюсь паттерном NWorkspace. Этот шаблон, кажется, имеет большой смысл, однако я не смог найти очень много примеров мест, где этот шаблон был успешно использован или даже публично задокументирован. Прежде чем я углублюсь в мою реализацию, я хотел бы знать, имел ли кто-нибудь успех при использовании этого шаблона или кто-то мог указать мне на любые ссылки, где NWorkspace использовался в любом проекте с открытым исходным кодом, из которого я мог бы поучиться. Также есть ли лучшие или более известные альтернативы этому шаблону, о которых я должен знать?

Краткая справочная информация о NWorkspace

Для тех, кто, возможно, не знаком с NWorkspace, это шаблон, введенный Джимми Ниссоном , который абстрагирует обязанности по запросам и персистентности. В своей книге «Применение доменных структур и шаблонов» Джимми Нильссон показывает, как NWorkspace можно использовать для абстрагирования инфраструктурных частей хранилища DDD, а также для обеспечения механизма выполнения кросс-репозитория с атомарностью в отношении персистентности.

1 Ответ

1 голос
/ 03 августа 2011

Похоже, он рекомендует отдельные интерфейсы для чтения и записи.
У меня нет опыта работы с описанным шаблоном, но я бы порекомендовал , а не , когда есть транзакции между репозиториями. Вместо этого я бы предложил несколько популярных среди сообщества DDD решений (Эрик Эванс, Уди Дахан, Грег Янг), которые действительно помогли мне:

  1. Всегда используйте энергичную загрузку на ваших совокупных корнях. Тогда вам не понадобится атомарность между репозиториями, и гораздо проще выяснить, что изменилось, когда вы сохраняете объект.
  2. Используйте отдельные классы для письма (т.е. доменные классы) и чтения (т.е. ваша модель представления). Создайте репозитории моделей представлений, которые извлекают модели представлений непосредственно из базы данных (вместо сопоставления объектов домена для просмотра классов моделей).

Посмотрите, упростит ли реализация двух вышеуказанных вещей ваш дизайн.

...