Em DDD, vale a pena definir um contexto limitado para acesso a arquivos?
Estou desenhando um editor como um aplicativo desktop que abre, salva e salva como documentos de arquivos, algo muito comum na verdade.
Já tenho contextos limitados para minhas regras de negócios.
Ingenuamente, quero colocar os caminhos dos arquivos usados para reidratar entidades como suas identidades e implementar os repositórios com acesso e gerenciamento de arquivos.
Mas tenho a sensação de que não é a maneira certa de gerenciar o aspecto do arquivo em meu aplicativo.
Então, você acha que pode ser interessante projetar um Contexto Bounded dedicado ao gerenciamento de arquivos?
Você tem exemplos de tais aplicativos combinando DDD e gerenciamento de arquivos?
A maioria dos exemplos mostra acesso a bancos de dados por meio de repositórios e não consegui encontrar nada sobre isso até agora.
Respostas
Pelo que entendi, o gerenciamento de arquivos não faz parte do domínio do seu negócio, portanto, um contexto limitado dedicado não faz sentido na minha opinião.
De alguma forma, posso entender que você não se sente confortável usando um caminho de arquivo como identificador para seus agregados como tipo de string primitivo. Portanto, sugiro criar um objeto de valor , por exemplo, DocumentId, que encapsula esse aspecto de identificação e o abstrai do código do cliente que trabalha com o modelo de domínio. O resto da implementação do repositório funciona da mesma forma como se você tivesse armazenado o conteúdo em um banco de dados. Use uma interface de repositório na camada de domínio e a implementação do repositório está na camada de infraestrutura.
A partir do livro, entendi um contexto delimitado como uma área de desenvolvimento, que é integrada o suficiente, para que as pessoas possam concordar sobre os conceitos representados por nomes. As divisões parecem ocorrer entre as equipes, que trabalham em aspectos separados de um problema sem comunicação e coordenação pesadas. ( esta questão também discute isso)
Não parece que o problema que você descreveu precise ser tratado por várias equipes. Você poderia simplesmente mover o gerenciamento de arquivos para um módulo separado na forma de um subdomínio genérico .