Quelle est la meilleure pratique pour envoyer des données vers le client: POCO ou DTO?
Je commence un projet à l'aide de EF 4 et POCO.
Quelle est la meilleure pratique pour envoyer des données vers le client ? Dois-je envoyer le POCO ou je devrais avoir un DTO à la place?
Il n'existe aucun problème je devrais être au courant lors de l'envoi de l'entité (qui est déconnecté du contexte) pour le client ?
Est-il recommandé d'envoyer le POCO de la couche client?
- Et que dire de l'Autonomie des Entités de Suivi? Ils peuvent vous faire économiser beaucoup de travail supplémentaire pour insérer, mettre à jour et supprimer des opérations côté serveur. Ne crois pas que le poco de cette fonctionnalité. Et je vous conseille de lire Julie Lerman Programmation "Entity Framework". Elle explore toutes sortes d'options, y compris: poco de l', dto et de l'autonomie des entités de suivi.
Vous devez vous connecter pour publier un commentaire.
Pour moi, l'une des principales raisons de l'utilisation d'EF4 avec POCO est le fait que vous n'avez pas besoin DTO est. Je peux le comprendre, à l'aide de DTO du traditionnel EDMX fichiers où vos entités sont assez gonflé, mais ce n'est pas le cas.
Votre POCO doit évidemment être sérialisable, mais il ne devrait pas y avoir de problèmes spécifiques à l'envoi de POCO entités qui ne sont pas également se produire avec la DTO de l'.
Je crois que l'on mélange 2 définitions d'ici qui n'ont pas de rapport les uns avec les autres.
DTO ou Objet de Transfert de Données est un modèle de conception, vous pouvez l'utiliser pour transférer des données entre les couches, et aussi ils n'ont pas de comportement. Martin Fowler explique cela très bien: http://www.martinfowler.com/eaaCatalog/dataTransferObject.html
Dans l'autre main, nous avons POCO ou Plain Old CLR Objet. Mais pour parler POCO, nous devons savoir où il a commencé, c'est-à POJO, ou Plain Old Java Object. Martin Fowler avec deux partenaires a inventé le terme et il l'explique ici: http://www.martinfowler.com/bliki/POJO.html
Donc POCOs peut avoir un comportement et tout ce que vous voulez. Ils sont les mêmes classes que vous écrivez dans votre quotidien de base, ils ont juste donné leur nom à les appeler dans un court et facile à mémoriser façon.
En réponse à votre deuxième question, je pense que la meilleure approche et celle que j'ai toujours aller pour l'envoi de l'Otd de la Busines Couche à tout ce qui l'utilise (par exemple: vos services, site web, application de bureau, application mobile, etc.). C'est parce qu'ils n'ont pas de comportement et de ne pas assez bien que seules les propriétés dans la plupart des cas, de sorte qu'ils sont légers et idéalement à l'utilisation de services, et bien sûr, ils ne révèlent pas les données sensibles de votre entreprise.
Cela étant dit, si vous prévoyez de l'utiliser DTO, je peux vous recommander de télécharger EntitiesToDTOs, une Entité Cadre DTO Générateur que j'ai récemment publié sur CodePlex, il est gratuit et open source. Aller à http://entitiestodtos.codeplex.com
J'ai un peu différent de l'opinion à partir de ci-dessus opinions.
Je crois DTO ou ViewModel est toujours nécessaire pour sortir du côté de la Couche Serveur.
En application du monde réel, il y a un point de vue peu de la couche qui seulement besoin d'un Objet du Domaine, qui est, presque tous les points de vue le besoin de multiples Objets du Domaine.
Et tous ces Objets du Domaine sont enveloppés dans un DTO ou ViewModel de la Classe.
C'est pourquoi j'insiste DTO ou ViewModel est toujours nécessaire, même si elles sont POCO.
Je considère EF4 entités modèles d'affaires ET viewmodel roulé dans un. Ils mettent déjà en œuvre des PropertyChanged hors de la boîte, par exemple. Classes partielles peuvent fournir des fonctionnalités personnalisées si vous avez besoin d'. La mise en miroir les entités avec votre propre sécurité de la couche de créer des travaux et d'entretien, à mon avis.
Je suis un croyant en la séparation de la logique métier et tout le reste. Toutefois, dans le cas de EF4 le travail est déjà fait pour vous. Aller de noix.