BT

Diffuser les Connaissances et l'Innovation dans le Développement Logiciel d'Entreprise

Contribuez

Sujets

Sélectionner votre région

Accueil InfoQ Actualités L'utilisation des Bounded Contexts de Domain Driven Design pour découper un modèle de domaine vaste

L'utilisation des Bounded Contexts de Domain Driven Design pour découper un modèle de domaine vaste

Pour diviser un modèle de domaine trop vaste en plusieurs modèles plus petits, les développeurs peuvent appliquer le concept de Bounded Context (Contexte Borné) proposé par Domain Driven Design (DDD) en utilisant le Contexte de Base de données (DbContext class) disponible dans Entity Framework (EF), ce que expliquait récemment Julie Lerman dans le magazine MSDN.

Evoluer d'un modèle unique comprenant beaucoup de classes vers plusieurs modèles plus petits présente des bénéfices, selon Julie, MVP Microsoft depuis 2003, qui travaille comme consultante et mentor sur la plateforme .Net. Les Bounded Contexts créent des modèles plus petits avec une meilleure cohésion et avec des frontières entre chaque modèle. L'article de Julie note néanmoins que les Bounded Contexts de DDD sont un concept qui dépasse largement l'usage du DbContext d'Entity Framework, et par conséquent l'implémentation qu'elle propose est «Contrainte» ou «Orientée», selon ses propres termes.

En séparant les classes selon différents contextes, par exemple en séparant celles qui s'occupent des clients de celles dédiées aux commandes et aux expéditions, et en les mettant dans des DbContexts séparés, Julie découpe un vaste contexte contenant toutes les classes de l'application en plusieurs contextes plus petits et plus spécifiques. Cela permet de conserver le même modèle de données sous-jacent et les mêmes tables en base de données.

Lorsque certains attributs d'une classe ne sont pas nécessaires au sein d'un contexte, une classe plus petite et plus ciblée peut être créée, qui ne reprend que certaines partie de la classe originale et donc indirectement certaines parties des tables sous-jacentes en base de données. Cela s'effectue en utilisant des vues en base de données. Une restriction pour ces classes est qu'elles ne peuvent pas être utilisées pour des insertions dans la base de données lorsqu'il existe des colonnes non-annulables hors du contrôle de la classe. Le DbContext va lever une exception en réponse à toute tentative d'insertion dans ce cas.

La mise en place de la base de données avec la création automatique de toutes les tables, «Code First», nécessite un travail supplémentaire avec un «über-modèle» séparé et un DbContext contenant toutes les classes. Ce contexte complet est ensuite utilisé pour initialiser la base de données.

Eric Evans, l'auteur du livre original DDD, a réagi positivement dans un tweet, mais d'autres émettent des réserves sur l'application des Bounded Contexts de cette manière et offrent des alternatives. Une réaction est que cela viole le concept, en citant la communauté DDD définition:

"Définissez explicitement le contexte dans lequel un modèle s'applique. Fixez explicitement des limites en termes d'organisation de l'équipe, de l'utilisation dans certaines parties spécifiques de l'application, et des représentations physiques telles que les bases de code et les schémas de base de données. Gardez le modèle strictement cohérent à l'intérieur de ces frontières (les bornes de chaque contexte), mais ne soyez pas distraits ou confus par des problèmes extérieurs".

Entity Framework est le framework de mapping object-relationnel de Microsoft pour la plateforme .NET.

Evaluer cet article

Pertinence
Style

Contenu Éducatif

BT