Question

Il y avait une discussion très intéressante sur LosTechies concernant AutoMapper (argument pour / contre cartographie 2 voies).

Cette réalité a attiré mon attention en raison du problème que je travaille actuellement à travers. Je travaille sur un morceau d'expédition pour fournir des informations telles que les tarifs / délais de livraison à mes utilisateurs. Pour centraliser les services réels, j'ai un service Web WCF qui persiste toutes les entités de domaine.

Pour simplifier le modèle de domaine que j'ai essentiellement 2 classes:

public class Shipment
{
 public IList<Item> Items{get;set;}
}

public class Item
{
 //some primitive properties
}

I ai aussi un ensemble correspondant d'OTD qui ont été créés pour alléger la charge à travers le fil. La pièce de présentation (ou des pièces, quelle que soit en contact avec le service Web), utilisez les DTO sans connaissance du modèle de domaine.

Ma question est ici. Pour créer une expédition, le service accepte une liste d'éléments. Il est logique de créer des livraisons, ce qui est tout caché derrière le service Web. Essentiellement, cela signifie que ItemDTO est passé à travers le fil (client -> serveur), les envois sont créés, puis ShipmentDTO est renvoyé (serveur -> client). Maintenant, ShipmentDTO a une liste d'enfants de ItemDTO ainsi, ce qui crée le scénario de cartographie 2 voies.

Ceci est plus qu'une simple opération CRUD et je suis farely nouveau au modèle Message de commande, donc je suis curieux de voir comment la communauté résoudrait ce problème.

Avez-vous passer un DTO dans les deux sens avec la cartographie 2 voies?

Utilisation de l'échantillon (couche de présentation):

List<ItemDTO> list = new List<ItemDTO>();
//add items to list


ShipmentServiceClient client = new ShipmentServiceClient();
List<ShipmentDTO> shipments = client.GetShipments(list);

//shipments are now displayed to the user
//with respective costs and other useful data
Était-ce utile?

La solution

Quelque chose qui a été mentionné dans ce poste que je l'ai pas bien saisi était le libellé dans une réponse. « DTO entrants sont mis en correspondance pour commander des messages ». Dire, DTO peut être bidirectionnelle, les applications (AutoMapper) à condition toutefois sont unidirectionnels.

Autres conseils

Au risque de manquer le point de votre question, je dirai qu'il est correct d'utiliser un DTO bi-directionnellement, tant que vous n'êtes pas réutilisez la DTO pour la mauvaise raison. Dans votre cas, est la demande au serveur pour créer un envoi pour un tas d'éléments peuplant pleinement chaque ItemDTO, de sorte que lorsque le serveur obtient en arrière, les ItemDTOs sont fondamentalement les mêmes? Ou, demandez-vous vraiment expédier plusieurs articles, mais le ItemDTO qui vient a de nouveau quelques détails supplémentaires remplis par le serveur (par exemple par élément frais de port, l'état des stocks, etc.)? Si ce dernier cas, je dirais que vous ne devriez pas réutiliser le ItemDTO pour représenter à la fois un élément particulier demandée pour l'expédition et les détails d'expédition sur un article.

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