Il y a eu une discussion très intéressante sur LosTechies regarding AutoMapper(an argument for/against 2-way mapping).DTO/Motif Commande Question
Ce fait a attiré mon attention en raison du problème que je travaille actuellement à travers. Je travaille sur une pièce 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
}
J'ai aussi un ensemble correspondant de DTO qui ont été créés pour alléger la charge sur le fil. La pièce de présentation (ou pièces, tout ce qui touche au service web), utilise les DTO sans aucune connaissance du modèle de domaine.
Ma question arrive ici. Pour créer un envoi, le service accepte une liste d'articles. Il est logique de créer des envois, qui sont tous cachés 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). Dorénavant, ShipmentDTO a également une liste enfant de ItemDTO, ce qui crée le scénario de mappage bidirectionnel.
Ceci est plus qu'une simple opération CRUD et je suis très nouveau dans le modèle de message de commande, donc je suis curieux de savoir comment la communauté pourrait résoudre ce problème.
Passez-vous un DTO dans les deux sens avec un mappage bidirectionnel?
Exemple d'utilisation (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
Le ItemDTO est réellement rempli (ou choisi) par le client. Le ShipmentDTO est ce qui porte coût, etc et est peuplé par le serveur. Mes problèmes ont résulté de la discussion AutoMapper, où il semble être la meilleure pratique d'utiliser la cartographie à sens unique, car il y a toujours un moyen de ne pas insituer quelque chose de bidirectionnel. –