Sto cercando di applicare DDD alla progettazione di un sistema di gestione delle versioni.
Entità di dominio
-
Project: il progetto / prodotto / sistema. -
ProjectEnvironment: gli ambienti (Test, Staging, Prod) esistenti per questo progetto. Ogni progetto ha i suoi ambienti definiti. -
ProjectVersion: una versione specifica del progetto. Questo sarebbe associato a un pacchetto di distribuzione.
Limiteaggregato
DaquestovorreiProjectesserelaradiceaggregataeProjectEnvironmenteProjectVersionessereaggregatidiProject.NessunodiquestipuòesisteresenzaProject.
Repository
AvreiquindisolounProjectRepositorycheforniràProjectspersistentecontuttigliaggregatiProjectVersioneProjectEnvironment(ediconseguenzaèpossibileaccedervisolotramiteilrispettivoProject).
Domande
Dovrebbeesserciun
VersionRepositoryeunEnvironmentRepository?UnmetodoGetVersionById()suProductRepositorysembrasbagliato.Mapoinonfornirebbepiùrepositorycheminaccianoillimiteaggregato?Dovrebbeesserciun"ProjectService" che gestirà e convaliderà gli aggregati usando i tre repository? Per salvaguardare da dati non validi, il codice cliente sarebbe solo in grado di fare riferimento al "ProjectService".