Je peux vous donner un autre exemple. Considérez que vous avez un système de commerce électronique. Vous auriez des produits là-bas, mais les produits feront partie d'au moins deux domaines différents:
- Catalogue de produits, où vous conservez la description de votre produit et tous ses attributs
- Inventaire, où vous avez le niveau de stock des produits
Si vous avez un contexte délimité pour les deux domaines, votre solution peut rapidement devenir une grosse boule de boue car vous commencerez à le croiser. À la fin, vous n'aurez plus deux domaines. Votre inventaire de produits sera gâché avec des références de catalogue de produits et vice versa. En conséquence, vous ne pourrez pas changer de domaine sans en toucher un autre, même si vous réalisez que ce n'est pas nécessaire. Vos modèles deviennent dépendants les uns des autres et étroitement couplés, et dépendent dans le mauvais sens - dépendant de la mise en œuvre.
Cependant, si vous avez deux contextes limités, toutes les modifications que vous effectuez dans un domaine n'affecteront pas l'autre dès que vous gardez vos canaux de communication clairs. Cela signifie que vous devez avoir une duplication des données, mais c'est le moindre coût à payer pour une application basée sur des composants à couplage lointain. Vos domaines peuvent communiquer entre eux à l'aide d'événements de domaine. Même si vous ne prévoyez pas d'avoir une application basée sur SOA au début, vous pourrez évoluer jusqu'à ce niveau lorsque vous en aurez besoin avec un effort relativement faible, car vous modifiez simplement le transport pour vos événements de domaine, en laissant l'idée derrière elle intacte.
Mise à jour: Il y a une bonne diffusion de compétences sur SkillsMatter, d'Eric Evans. Il donne une analogie avec la vieille histoire, lorsque plusieurs aveugles décrivent un éléphant de leur point de vue. Étant donné que chaque homme ne peut toucher qu'une partie de l'éléphant, ils le décrivent comme un "arbre", un "mur", un "serpent", une "corde". Et chacun de ces hommes est dans son contexte. Le contexte borné est celui où vit une langue omniprésente. En dehors du contexte, ces termes peuvent avoir une signification complètement différente mais à l'intérieur du contexte, la langue est la même dans plusieurs domaines. Greg Young suggère fortement de commencer à lire le livre bleu du chapitre 11, car les concepts fondamentaux les plus importants y sont expliqués. L'accent mis sur les schémas tactiques au début du livre rend cette approche «DDD-light» très courante,