Было очень интересное обсуждение LosTechies относительно AutoMapper (аргумент за / против 2-стороннего отображения).
Это действительно привлекло мое внимание из-за проблемы, с которой я сейчас работаю. Я работаю над отправкой, чтобы предоставить пользователям информацию, такую как цены / сроки доставки. Для централизации реальных служб у меня есть веб-служба WCF, в которой сохраняются любые доменные объекты.
Для упрощения модели предметной области у меня в основном есть 2 класса:
public class Shipment
{
public IList<Item> Items{get;set;}
}
public class Item
{
//some primitive properties
}
У меня также есть соответствующий набор DTO, которые были созданы, чтобы облегчить нагрузку на провод. Часть представления (или части, независимо от того, что касается веб-службы), используют DTO без знания модели предметной области.
Мой вопрос приходит сюда. Для создания отгрузки сервис принимает список товаров. Существует логика создания поставок, которая скрыта за веб-сервисом. По сути, это означает, что ItemDTO передается по проводам (клиент -> сервер), создаются посылки, затем ShipmentDTO передается обратно (сервер -> клиент). Теперь у ShipmentDTO есть дочерний список ItemDTO, который создает сценарий двустороннего сопоставления.
Это больше, чем простая операция CRUD, и я плохо знаком с шаблоном командных сообщений, поэтому мне интересно, как сообщество решит эту проблему.
Вы передаете 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