Czy w DDD warto zdefiniować ograniczony kontekst dla dostępu do plików?
Projektuję edytor jako aplikację komputerową, która otwiera, zapisuje i zapisuje jako dokumenty z plików, co w rzeczywistości jest bardzo powszechne.
Mam już ograniczone konteksty dla moich reguł biznesowych.
Naiwnie chcę umieścić ścieżki plików używanych do ponownego nawodnienia jednostek jako ich tożsamości i zaimplementować repozytoria z dostępem do plików i zarządzaniem nimi.
Ale mam wrażenie, że nie jest to właściwy sposób zarządzania aspektem pliku w mojej aplikacji.
Czy uważasz, że zaprojektowanie ograniczonego kontekstu poświęconego zarządzaniu plikami może być interesujące?
Czy masz przykłady takich aplikacji łączących DDD i zarządzanie plikami?
Większość przykładów pokazuje dostęp do baz danych przez repozytoria i do tej pory nie byłem w stanie nic na ten temat znaleźć.
Odpowiedzi
Jak rozumiem, zarządzanie plikami nie jest częścią domeny biznesowej, więc moim zdaniem dedykowany kontekst ograniczony nie ma sensu.
W jakiś sposób mogę zrozumieć, że nie czujesz się komfortowo, używając ścieżki pliku jako identyfikatora dla swoich agregatów jako prymitywnego typu łańcucha. Proponuję więc stworzyć obiekt wartości , np. DocumentId, który hermetyzuje ten aspekt identyfikacji i oddziela go od kodu klienta pracującego z modelem domeny. Reszta implementacji repozytorium działa tak samo, jak gdybyś przechowywał zawartość w bazie danych. Użyj interfejsu repozytorium w warstwie domeny, a implementacja repozytorium znajduje się w warstwie infrastruktury.
Z książki zrozumiałem ograniczony kontekst jako obszar rozwoju, który jest wystarczająco zintegrowany, aby ludzie mogli uzgodnić pojęcia reprezentowane przez nazwy. Wydaje się, że między zespołami, które pracują nad różnymi aspektami problemu, bez ciężkiej komunikacji i koordynacji, zdarzają się podziały. ( to pytanie również to omawia)
Wygląda na to, że problem, który opisujesz, nie musi być rozwiązany w wielu zespołach. Możesz po prostu przenieść zarządzanie plikami do oddzielnego modułu na wzór ogólnej subdomeny .