J'ai un domaine relativement simple, avec environ 7-8 entités principales identifiées et celles-ci pourraient être leurs propres racines agrégées. Mais il va y avoir un écran d'interface utilisateur qui va lister l'union de tous les objets dans le système, cela signifierait l'union de tous les agrégats. Une des manières dont j'ai à l'esprit est d'utiliser la composition, c'est-à-dire un agrégat de métadonnées auquel toutes les autres racines agrégées se réfèrent, ce sera une entité indépendante. Donc, pour cet écran, je peux interroger cet agrégat, les champs que je déplace vers ce nouvel agrégat sont les champs communs qui doivent être affichés dans ma grille "Tous les objets".Problèmes d'interface utilisateur affectant la conception de domaine
L'autre approche pourrait être d'avoir une méthode de service d'application qui construit la liste nécessaire pour « Tous les objets » écran en interrogeant les autres référentiels et la fusion des listes à la couche d'application et la manipulation également radiomessagerie etc.
I Je suis mal à l'aise avec la première solution car je peux voir un cas d'utilisation de l'interface utilisateur influençant ma conception de domaine mais le db fait le travail de manipulation de la pagination, la fusion des listes etc et il n'y a pas de joint toutes ces informations glanées par un simple, simple question.
La seconde solution, même si elle semble plus propre, perd en facilité et en performance.
Veuillez nous aviser.
Je pense que vous venez de décrire un cas où les lectures et les écritures doivent être séparées (vous savez, ce petit modèle appelé cqrs). À quel point ces données «tous les objets» doivent-elles être fraîches? Vous pouvez choisir de faire une projection asynchrone explicite, ou définir une vue sur vos données (un peu comme ce que les métadonnées étaient pour (btw, ce n'est pas un agrégat)) ou même utiliser un chemin différent (requête) dans votre code pour obtenir les données tu veux. –