WPF : Peut-on utiliser MVVM avec D D D (Domain Driven Design ) ?
Bonjour à Tout le monde,
Je suis en train de développer une application RICH Client simple avec WPF, C# et EF 6. Malgré sa taille, l'application contient beaucoup de métier, donc j'ai pensé à subdiviser l'application en plusieurs couches logicielles. J'ai utilisé pour cela DDD (Domain Driven Design) comme approche. Bref, après quelques recherches j'ai réussi à déterminer le squelette du projet VS 2012 selon DDD . Mais au cours de développement je me suis rendu compte qu'il me faut utiliser le MVVM pour garder les classes de mon domaine intactes (N'héritant pas de INotifyPropertyChanged).
Le problème est qu'il y a des questions qui se posent :
1°) à quel niveau de DDD doit t-on inserer la couche Model de MVVM (Sachant que DDD a la couche Domain qui contients les entités du domaines)?
2°) à quel niveau de DDD doit t-on inserer la couche ViewModel de MVVM (sachant que DDD a une couche application qui a presque les mêmes responsabilite que le ViewModel si je ne me trompe pas)?
Vos Idées sont les bienvenues...
Merci à tous.
Oui il est possible de combiner MVVM et D.D.D (Domain Driven Design )
Bonjour à tous,
La réponse à ma question est : Oui
En effet, j'ai découvert un article dans lequel une équipe Espagnole décrivait comment il est possible de réaliser une implémentation de l'approche DDD à l'aide des technologies DotNet.
Voici le lien (en anglais) :
il y a même le code source téléchargeable en free.
Après avoir jeté un coup d’œil j'ai réalisé que :
1°) pour la question n°1 : Le modèle de MVVM peut être confondu avec la couche domaine de DDD.
2°) Pour la question n°2 : le ViewModel c'est une chose tout à fait différente de la couche Application de DDD. En effet le ViewModel sert à séparer la vue du modèle alors que la couche application est une petite couche purement technique et ne doit pas contenir de logique métier. Elle doit coordonner les actions dans l'application comme par exemple de faire appel aus services des "repositories" pour ajouter ou supprimer une une entité, ou réaliser une transaction en faisant appel aux intervenant de celle-ci.