В DDD стоит ли определять ограниченный контекст для доступа к файлам?

Dec 03 2020

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

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

Итак, как вы думаете, может быть интересно разработать ограниченный контекст, посвященный управлению файлами?
Есть ли у вас примеры таких приложений, сочетающих DDD и управление файлами?

Большинство примеров показывают доступ к базам данных через репозитории, и я пока ничего не смог найти об этом.

Ответы

1 afh Dec 04 2020 at 16:42

Насколько я понимаю, управление файлами не является частью вашего бизнеса, поэтому, на мой взгляд, выделенный ограниченный контекст не имеет смысла.

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

TheHowlingHoaschd Dec 04 2020 at 17:18

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

Не похоже, что описываемая вами проблема требует решения нескольких команд. Вы можете просто переместить управление файлами в отдельный модуль в стиле Generic Subdomain .