Bonjour à vous tous,

cela fait un bout de temps que je lis les différentes discussions sur l'utilisation de POCO - DTO.

J'ai bien lu les différents articles provenant de cette discussion :
Ma question provient de cette discussion, où il est dit :
Citation Envoyé par rv26t Voir le message

Citation Envoyé par Kropernic Voir le message
Après l'article :
Vu que mettre des méthodes dans un DTO, c'est mal, je vais utiliser les objets de la couche BLL et faire un POCO.
Du coup, ça donne :


  • Un DTO est un conteneur le plus léger possible et à ce titre, il ne contient que des propriétés et un constructeur.
  • La couche BLL consomme les méthodes de la couche DAL et reçoit en retour un DTO ou une liste de DTO.
  • La couche GUI consomme les méthodes de la couche BLL et reçoit en retour un POCO ou une liste de POCO.

Où est-ce que je me plante ?
Sur le 3ème point.

La couche GUI consomme les méthodes de la couche BLL et reçoit en retour un DTO ou une liste de DTO. Seul le DTO transite entre les couches.


Même si vous avez un POCO dans votre BLL vous ne transmettez que le DTO.
Le POCO est une classe de votre BLL qui contiend un DTO (ou liste de DTO) et les méthodes qui les manipules. (Le POCO s'occupe de la partie logique métier uniquement, quand il a fait son travail, il renvoie le DTO)
Mais j'ai du mal à comprendre, si mon POCO est l'objet métier qui contient toutes les méthodes métiers et que seul mon DTO doit passer dans les différentes couches. Comment peut-on interagir sur le DTO via la GUI ?

Moi j'aurais stocké le POCO dans la GUI pour pouvoir appeler les différentes méthodes de mon POCO dans celle-ci.

Bref je me perd, comme beaucoup visiblement sur la notion de POCO vs DTO et leurs utilisations