2009-11-09 3 views
1

Был очень интересное обсуждение на LosTechies regarding AutoMapper(an argument for/against 2-way mapping).DTO/команда Вопрос

Это действительно привлекло мое внимание в связи с проблемой я в настоящее время работает через. Я работаю над отправкой товара, чтобы предоставлять пользователям такие данные, как тарифы/сроки доставки. Чтобы централизовать фактические службы, у меня есть веб-сервис WCF, который сохраняется в любых доменах.

Для упрощения модели предметной области, я в основном имею 2 класса:

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

public class Item 
{ 
//some primitive properties 
} 

У меня также есть соответствующий набор DTOS, которые были созданы, чтобы облегчить нагрузку через провод. Презентационная часть (или части, независимо от того, что касается веб-службы), использует DTO без знания модели домена.

Мой вопрос приходит сюда. Для создания отправки служба принимает список элементов. Существует логика создания заказов, которые все скрыты за веб-службой. По сути, это означает, что ItemDTO передается через провод (клиент -> сервер), создаются отгрузки, затем ShipmentDTO передается обратно (сервер -> клиент). Теперь у ShipmentDTO есть дочерний список ItemDTO, который создает сценарий двухстороннего сопоставления.

Это более чем простая операция CRUD, и я очень новичок в шаблоне Command Message, поэтому мне интересно, как сообщество решит эту проблему.

Вы передаете DTO в обе стороны с двухсторонним отображением?

Пример использования (уровень представления):

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 

ответ

1

Что-то, что было упомянуто в этом посте, что я не совсем понял, было формулировкой в ​​ответе. «Входящие DTO сопоставляются командам сообщений». Высказывание, DTO могут быть двунаправленными, при этом отображаются сопоставления (AutoMapper), однако они однонаправлены.

0

рискуют пропустить точку вашего вопроса, то я скажу, что это нормально использовать DTO двунаправленным, до тех пор, пока вы не повторять использование DTO по неправильной причине. В вашем случае это запрос на сервер, чтобы создать отгрузку для множества элементов, полностью заполняющих каждый ItemDTO, так что, когда сервер вернет его, ItemDTOs будут в основном одинаковыми? Или вы действительно запрашиваете доставку нескольких предметов, но возвращаемый ItemDTO имеет некоторые дополнительные данные, заполненные сервером (например, стоимость доставки товара, состояние инвентаря и т. Д.)? Если в последнем случае я бы сказал, что вы не должны повторно использовать ItemDTO, чтобы представлять как конкретный элемент, запрашиваемый для отправки, так и данные о доставке товара.

+0

ItemDTO фактически заполнен (или выбран) клиентом. ShipmentDTO - это то, что несет стоимость и т. Д., И заполняется сервером. Мои проблемы возникли в результате обсуждения AutoMapper, где, как представляется, наилучшей практикой является использование однонаправленного отображения, поскольку всегда есть способ не вписывать что-то двунаправленное. –

Смежные вопросы