Un POCO suit les règles de la POO. Il devrait (mais n'est pas obligé) avoir un état et comportement. POCO vient de POJO, inventé par Martin Fowler [ anecdote ici ]. Il a utilisé le terme POJO comme un moyen de rendre plus sexy le rejet des implémentations EJB lourdes. POCO devrait être utilisé dans le même contexte dans .Net. Ne laissez pas les frameworks dicter la conception de vos objets.
Le seul but d'un DTO est de transférer un état, et il ne doit pas avoir de comportement. Voir l'article de Martin Fowler explication d'un DTO pour un exemple d'utilisation de ce modèle.
Voilà la différence : Le POCO décrit une approche de la programmation (la bonne vieille programmation orientée objet), où DTO est un modèle qui est utilisé pour "transférer des données" à l'aide d'objets.
Bien que vous puissiez traiter les POCOs comme des DTOs, vous courez le risque de créer une modèle de domaine anémique si vous le faites. En outre, il y a un décalage dans la structure, puisque les DTO doivent être conçus pour transférer des données, et non pour représenter la véritable structure du domaine d'activité. Il en résulte que les DTO ont tendance à être plus plats que votre domaine réel.
Dans un domaine d'une complexité raisonnable, il est presque toujours préférable de créer des POCO de domaine séparés et de les traduire en DTO. Le DDD (domain driven design) définit les couche anti-corruption (autre lien aquí mais la meilleure chose à faire est acheter le livre ), qui est une bonne structure qui rend la ségrégation claire.
5 votes
"POCO = Plain Old CLR (ou mieux : Class) Object". Ainsi, les objets de cette nature dans VB.NET seraient également des POCO, et non des POVO.