В DDD стоит ли определять ограниченный контекст для доступа к файлам?
Я разрабатываю редактор как настольное приложение, которое открывает, сохраняет и сохраняет как документы из файлов, что на самом деле очень распространено.
У меня уже есть ограниченные контексты для моих бизнес-правил.
Наивно, я хочу указать пути к файлам, которые используются для регидратации сущностей, в качестве их идентификаторов и реализовать репозитории с доступом к файлам и управлением ими.
Но мне кажется, что это неправильный способ управлять файловым аспектом в моем приложении.
Итак, как вы думаете, может быть интересно разработать ограниченный контекст, посвященный управлению файлами?
Есть ли у вас примеры таких приложений, сочетающих DDD и управление файлами?
Большинство примеров показывают доступ к базам данных через репозитории, и я пока ничего не смог найти об этом.
Ответы
Насколько я понимаю, управление файлами не является частью вашего бизнеса, поэтому, на мой взгляд, выделенный ограниченный контекст не имеет смысла.
Я могу каким-то образом понять, что вам неудобно использовать путь к файлу в качестве идентификатора для ваших агрегатов в качестве примитивного строкового типа. Поэтому я предлагаю создать объект значения , например DocumentId, который инкапсулирует этот аспект идентификации и абстрагирует его от клиентского кода, работающего с моделью предметной области. Остальная часть реализации репозитория работает так же, как если бы вы сохранили контент в базе данных. Используйте интерфейс репозитория на уровне домена, и реализация репозитория находится на уровне инфраструктуры.
Из книги я понял, что ограниченный контекст - это область развития, которая достаточно интегрирована, чтобы люди могли прийти к единому мнению о концепциях, представленных именами. Похоже, что между командами возникают расколы, которые работают над отдельными аспектами проблемы без тесного взаимодействия и координации. ( этот вопрос также обсуждает это)
Не похоже, что описываемая вами проблема требует решения нескольких команд. Вы можете просто переместить управление файлами в отдельный модуль в стиле Generic Subdomain .