J'ai lutté avec moi-même. Il y a des cas où un DTO est logique de l'utiliser dans presentaton. Disons que je veux afficher une liste déroulante de Sociétés dans mon système et j'ai besoin de leur id pour lier la valeur de.
Eh bien au lieu de chargement d'une CompanyObject qui pourrait avoir des références à des abonnements ou qui sait quoi d'autre, je pourrais envoyer un DTO avec le nom et l'id. C'est une bonne utilisation de mon humble avis.
Maintenant prenons un autre exemple. J'ai un objet qui représente une Estimation, cette estimation peut être faite de travail, de l'équipement, etc, il pourrait avoir beaucoup de calculs qui sont définis par l'utilisateur qui prend tous ces éléments et de les résumer (Chaque estimation peut être différent avec différents types de calculs). Pourquoi devrais-je avoir pour modèle de cet objet deux fois? Pourquoi ne puis-je pas simplement mes UI énumérer sur les calculs et de les afficher?
En général, je n'utilisez pas de DTO pour isoler mon domaine de couche à partir de mon INTERFACE. Je ne les utiliser pour isoler mon domaine calque à partir d'une limite de ce qui est hors de mon contrôle. L'idée que quelqu'un pourrait mettre les informations de navigation de leur objet métier est ridicule, de ne pas contaminer votre business object.
L'idée que quelqu'un aurait mis la validation de leur objet métier? Et bien moi je dis que c'est une bonne chose. Votre INTERFACE utilisateur ne doit pas avoir l'entière responsabilité de valider votre business objects. Votre couche de gestion DOIT faire sa propre validation.
Pourquoi voudriez-vous mettre de l'INTERFACE utilisateur de génération de code dans un busienss objet? Dans mon cas, j'ai séparé les objets qui génère le code de l'INTERFACE utilisateur seperatley à partir de l'INTERFACE utilisateur. J'ai sperate objets qui rendent mon entreprise objets en Xml, l'idée que vous avez séparé vos couches pour éviter ce type de contamination est très étrange pour moi parce que pourquoi voudriez-vous même mettre HTML de génération de code dans un objet métier...
Modifier
Comme je pense un peu plus, il ya des cas où les informations concernant l'INTERFACE utilisateur peut appartenir à la couche domaine. Et peut-cloud ce que vous appelez une couche domaine, mais j'ai travaillé sur une application multi-locataires, qui étaient très différents de comportement à la fois ergonomie de l'INTERFACE utilisateur fonctionnelle et flux de travail. En fonction de divers facteurs. Dans ce cas, nous avons eu un modèle de domaine que représentaient les locataires et leur configuration. Leur configuration est arrivé à inclure des informations concernant l'INTERFACE utilisateur (l'Étiquette générique de champs par exemple).
Si j'avais à la conception de mes objets pour les rendre permanent, dois-je également avoir à dupliquer les objets? Gardez à l'esprit si vous voulez ajouter un nouveau champ, vous avez maintenant deux places pour l'ajouter. Peut-être cela soulève une autre question si votre aide DDD, sont toutes les entités persistantes des objets du domaine? Je sais que dans mon exemple, ils ont été.