J'ai récemment commencé à lire sur la conception pilotée par domaine et la plupart des endroits expliqués ou discutés plus en termes conceptuels. Étant une philosophie de conception, cela aide à comprendre les concepts, mais je me demandais comment structurer mon projet selon DDD.
Par exemple, dans une structure typique utilisée dans la plupart des projets:
Root
Quelle serait la structure d'un projet similaire dans DDD? Avons-nous un exemple d'application d'entreprise publique à laquelle je peux me référer?
DDD (le Blue Book) ne mentionne pas explicitement la structure du projet ou une hiérarchie de packaging pour autant que je m'en souvienne. Cela justifie cependant l'utilisation du langage ubiquitaire dans notre code.
Il est également logique de traduire cela en packages. Ainsi, au lieu de baser votre emballage sur des termes techniques (comme dans votre exemple), vous pouvez empaqueter votre application en fonction de termes commerciaux (fonctionnalités).
Voici un de mes articles sur la façon de faire emballage basé sur la fonctionnalité plutôt que sur les détails techniques .
TL; DR:
Cela dépendra de la nature du domaine.
Par exemple, un domaine de référentiel de code source s'intéresse aux ensembles de modifications, mais également aux fichiers, dossiers et chemins. Il peut y avoir d'autres entités intéressantes ici aussi, mais vous pouvez déjà voir un système se rassembler.
Il existe un contexte délimité autour d'une vue de système de fichiers spécifique, un autre autour des ensembles de modifications impliquant éventuellement des validations.
La vue du système de fichiers peut être fournie de plusieurs manières, même si elles ont toutes une sémantique similaire dans le domaine. Dire une vue à un commit spécifique sur une branche (implémentée en termes de sets de changements, de commits, etc ...) Et une vue de l'extraction locale (implémentée en termes d'abstractions du système de fichiers Host os).
Ces deux implémentations de la vue du système de fichiers seraient des bibliothèques distinctes (ou au moins des dossiers dans la même bibliothèque sans dépendances croisées). Le contexte délimité de la vue du système de fichiers peut vivre dans son propre répertoire.
C'est essentiellement l'idée de l'architecture d'oignon.