Au lieu de les appeler de POCO, je préfère les appeler la persistance des objets ignorants. Parce que leur travail est simple, ils n'ont pas besoin de se soucier de leur utilisation ou de la façon dont ils sont utilisés.
Personnellement, je pense que POCO sont juste un autre mot à la mode (comme le Web 2.0 - ne me lancez pas là-dessus) pour une classe publique avec des propriétés simples.
J'ai toujours utilisé ce type d'objets pour conserver l'état de l'entreprise.
Les principaux avantages de POCO sont vraiment visibles lorsque vous commencez à utiliser des éléments tels que le modèle de référentiel, les ORM et l'injection de dépendances.
En d'autres mots - vous pouvez créer un ORM (disons EF) qui retire les données de quelque part (db, service web, etc.), puis projet ces données en objets (POCO de).
Ces objets peuvent être transmis plus bas dans la pile d'applications vers la couche de service, puis vers le niveau Web.
Ensuite, si un jour vous décidez de passer à nHibernate, vous ne devriez pas du tout toucher à votre POCO, la seule chose qui devrait être changée est l'ORM.
D'où le terme «persistance ignorant» - ils se moquent de ce qu'ils sont utilisés ou comment ils sont utilisés.
Donc, pour résumer, le pro:
- Permet un mécanisme de stockage simple pour les données, simplifie sérialisation/passant autour à travers les couches
- va de pair avec l'injection de depedency, modèle référentiel et ORM de. La flexibilité.
- Complexité et dépendances minimales sur les autres couches. (la couche supérieure ne s'occupe que des POCO, les POCO ne se soucient de rien). Couplage libre
- Testabilité simple (pas de talonnage requis pour les tests de domaine).
Espérons que ça aide.
Cela est parfaitement logique. J'aime votre utilisation de l'expression "mot à la mode". Il semble que je l'utilise déjà dans mon projet. L'utilisation que je fais est de tirer "quelques" données 'User' en utilisant L2S (essentiellement 4 des 10 champs de la base de données) et les stocker dans un objet" POCO "très basique. Je sérialise ensuite cet objet et le stocke en tant qu'objet 'UserData' dans le cookie d'authentification ASP.NET. Alors que je peux le récupérer plus tard sans toucher à la base de données à nouveau. –
@rockinthesixstring - exactement mon point. Nous utilisons POCO depuis des années, c'est juste une autre façon d'étiqueter quelque chose. Personnellement, j'aime la combinaison de l'injection de schéma de dépôt/dépendance et ORM - dans ce scénario, vous seriez fou de ne pas utiliser POCO. Tout est dans le couplage lâche. Bien sûr, je n'ai aucune idée de la technologie que vous utilisez (je tire de mon expérience .NET) – RPM1984
Oui, comme je l'ai dit dans mon commentaire, j'utilise ASP.NET - J'utilise en fait MVC2. –