2010-05-17 8 views
2

J'ai quelques (espérons-le) des questions simples sur les racines globales dans la conception Domain Driven:Une série de simples Aggregate questions racine (Design Domain Driven)

  1. Est-il normal d'avoir une racine globale en tant que propriété de une autre racine agrégée?
  2. Est-il acceptable d'avoir une entité donnée dans deux racines agrégées ou plus?

Ma dernière question est un peu plus complexe. J'ai un site Web qui a quelques entités qui appartiennent vraiment à une racine agrégée "site Web". Ils sont 'News', 'Products' et 'Users'. Il n'y a pas de table 'Site Web' dans la base de données, mais un 'Site' semble être une bonne racine agrégée pour ces trois entités. Comment cela se fait-il habituellement?

Merci!

Répondre

1

Avez-vous des règles de cohérence couvrant l'ensemble du site (concernant plusieurs produits d'information et utilisations)? Sinon, ces entités (nouvelles, produits, utilisateurs) sont de bons candidats pour être vos racines agrégées.

La fonction principale de l'agrégat a pour but d'assurer la cohérence et la limite de la sémantique des transactions.

Pour vous répondre à des questions:

  1. Oui, il est ok aussi longtemps que cette racine visée globale n'est pas modifiée au cours d'une opération de contenant AR. Ceci est relié à les limites de cohérence: opérations couvrant plusieurs agrégats ne garantit pas le à produisent des résultats cohérents afin qu'ils devraient être évités

  2. Non, une entité (qui n'est pas AR) peut être une partie de un seul agrégat.

+0

Merci pour vos réponses. En pensant aux nouvelles, aux produits et à l'utilisateur, il semble que les utilisateurs appartiennent à une racine agrégée différente, et puisque les nouvelles et les produits ne sont pas vraiment liés, ils sont leurs propres racines agrégées. Vos réponses à 1 et 2 ont aussi du sens lorsque je travaille dans mon domaine. – Robert