J'essaie de réécrire une application monolithique en une application monolithique modulaire utilisant DDD et une architecture hexagonale. Essayez d'abord d'extraire trois modules (agrégations) : "Partagé", "Utilisateur" et "Article".
D'après ce que j'ai bien compris, aucune dépendance ne doit être créée entre "user" et "post". Cependant, ils peuvent tous utiliser le contenu du module Partagé.
Alors voici le truc…
Le module "Articles" est associé à l'entité Article
实体,该实体与 User
实体相关。从 DDD 的角度来看,它是特定文章的创建者。将会有更多类似的模块与 User
en tant qu'auteur ou propriétaire de la ressource.
Comment doit-il être mis en œuvre ? Faut-il le déplacer vers Partagé ? Malheureusement, aucune ressource spécifique n'a pu être trouvée. Github contient principalement des projets avec une seule agrégation et il n'existe pas d'entité User
.
Je suis toujours à la recherche de différentes façons de résoudre des problèmes comme celui-ci. Vous pouvez créer un agrégat partagé et personne ne peut dire que c'est faux. Cependant, je pense que la meilleure solution est de créer un agrégat Person (ou People) dans lequel vous pouvez avoir une PersonEntity (ou AuthorEntity) liée à ArticleEntity. Il n'y a aucun problème avec la relation entre les agrégats, mais je vous suggère d'essayer de Créez uniquement des racines de relation entre les agrégats.
Ceci est un échantillon du Blue Book d'Eric Evans
Veuillez noter que Voyage est l'AggregateRoot dans Aggregate Voyage, qui a une relation avec l'AggregateRoot Location de l'agrégat Location.