BT

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

par Jan Stenberg , traduit par Cyrille Martraire le 20 juin 2013 |

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.

Bonjour étranger!

Vous devez créer un compte InfoQ ou cliquez sur pour déposer des commentaires. Mais il y a bien d'autres avantages à s'enregistrer.

Tirez le meilleur d'InfoQ

Donnez-nous votre avis

Html autorisé: a,b,br,blockquote,i,li,pre,u,ul,p

M'envoyer un email pour toute réponse à l'un de mes messages dans ce sujet
Commentaires de la Communauté

Html autorisé: a,b,br,blockquote,i,li,pre,u,ul,p

M'envoyer un email pour toute réponse à l'un de mes messages dans ce sujet

Html autorisé: a,b,br,blockquote,i,li,pre,u,ul,p

M'envoyer un email pour toute réponse à l'un de mes messages dans ce sujet

Discuter

Contenu Éducatif

Rien ne serait possible sans le soutien et la confiance de nos Sponsors Fondateurs:

AppDynamics   CloudBees   Microsoft   Zenika
Feedback Général
Bugs
Publicité
Éditorial
InfoQ.com et tous les contenus sont copyright © 2006-2014 C4Media Inc. InfoQ.com est hébergé chez Contegix, le meilleur ISP avec lequel nous ayons travaillé.
Politique de confidentialité
BT