-
Domain service ?
Bonjour,
Comment définiriez vous ce qu'est le domain service au sein d'une application mvc (par exemple jee). Pour ma part je m'en sert comme couche intermédiaire pour découpler ma couche Controller et ma couche Model. quelque chose du type Controller s'adresse a domain service pour obtenir implémentation des DAO. Qu'en pensez vous ? 8O
-
Bonjour,
Je connais la notion de Domain Service telle que définie dans Domain Driven Design. Il s'agit d'un service qui réside dans la couche Domaine (= business) et fournit des opérations transversales à plusieurs entités métier ou qui ne semblent avoir leur place dans aucune entité.
Exemple : transférerFonds() n'a pas vraiment sa place dans l'entité CompteBancaire car cela voudrait dire que le compte bancaire source va devoir manipuler le solde du compte bancaire de destination, ce qui n'est pas forcément élégant. On peut alors créer un ServiceTransfertFonds dans la couche domaine avec une méthode transférerFonds(CompteBancaire source, CompteBancaire destination, montant).
Pour revenir au problème d'origine, effectivement, certains utilisent aussi des Domain Services pour servir de couche intermédiaire entre Contrôleur et DAO (Repositories en langage DDD). Par contre il ne s'agit pas juste d'un "DAOLocator" qui va balancer le DAO adéquat au Contrôleur. Ce type de Domain Service va carrément implémenter les mêmes méthodes que celles du DAO, c'est en fait un passe-plat ou une façade entre Contrôleur et DAO. C'est aussi l'endroit où au passage on peut faire la conversion entre objets métier et DTO si on n'a pas envie que le Contrôleur manipule des objets métier purs.
Il faut quand même noter qu'il y a discussion autour du fait qu'il est bon que le contrôleur accède directement aux DAO ou non. Personnellement ça ne me choque pas qu'il le fasse, surtout dans les applis modérément complexes.
Cf http://stackoverflow.com/questions/3...the-controller
http://stackoverflow.com/questions/8...ories-directly
-
merci pour votre éclaircissement. :)