Question

Lors de la création d'une solution de n-tier, je ne veux pas exposer mes objets métier, mais utilise DTO au lieu de cela. De l'autre côté, je ne veux pas définir doublement des objets et écrire copie code tout le temps.

Maintenant, mon idée serait d'écrire DTO qui contiennent tous les champs et les propriétés nécessaires, mais pas de logique (seul état).

Alors je tireraient mes objets d'affaires de ces DTO, les étendre avec ma logique métier, en travaillant sur les classes de base DTO propriétés. Ces objets seraient également les objets ont persisté dans le ORM utilisé (NHibernate).

Avec cette approche, sur le côté serveur que je pouvais travailler sur les objets métier et les transmettre directement au client (ils sont dérivés, donc vers le bas-coulable). Je ne serais pas obligé d'exposer ma logique d'affaires de cette façon et d'économiser beaucoup de code.

Pensez-vous que cette approche est raisonnable?

Cordialement,

Sebastian

Était-ce utile?

La solution

Vous pouvez considérer les points suivants:

  

» ...,   parce que en gardant le DTO pas au courant de la   objets de domaine vous permet de réutiliser   DTO dans des contextes différents.   De même, vous ne voulez pas le domaine   objets savoir sur le DTO parce que   cela peut vouloir dire que changer le DTO   il faudrait modifier le code dans la   logique de domaine , ce qui conduirait à une   cauchemar d'entretien.

     

La meilleure solution est d'utiliser le modèle de Assembleur , ce qui crée des objets DTO d'affaires et vice versa. Assembleur est une instance spécialisée du Mapper modèle également mentionné dans Modèles d'architecture d'applications d'entreprise .... "

Motif et pratique: transfert de données objet

En outre, je n'ai pas utilisé par moi-même, mais vous pouvez consulter AutoMapper comme bien.

Autres conseils

me semble raisonnable. Dans LINQ to SQL, les objets métier proviennent de la DTO de par l'utilisation des classes partielles.

« Je tireraient mes objets d'affaires de ces DTO » avoir à l'esprit que DTO peut être différente de BO ils peuvent contenir des propriétés de 2 ou 3 BO

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top