Мы начинаем новую архитектуру mulit-tier. В прошлом я использовал AutoMapper для сопоставления объектов передачи данных с бизнес-объектами и наоборот. Коллега предположил, что вместо сопоставления мы должны обернуть dto внутри бизнес-объекта. Возможно, путем ввода dto в конструкторе бизнес-объекта. Затем мы можем получить доступ к значениям свойств dto на лету без отображения.Обтекание dto внутри бизнес-объекта - хорошая идея?
Вопрос:
Этот подход рекомендуется?
Я знаю, что если бизнес-объект знает, что вы вводите тугое соединение. Кроме того, вы теряете некоторую гибкость, создавая связь 1: 1 между бизнес-объектом и dto, которая обычно - с гибким отображением - будет отношением n: m.
(см: Best Practices For Mapping DTO to Domain Object?)
Является ли это недостатком причина никто, кажется, использует подход обертку или я скучаю коснуться?
Вот краткий демо, что я имею в виду "оборачивания":
public class BusinessObject
{
private Dto dto;
public BusinessObject()
{
this.dto = new Dto();
}
public BusinessObject(Dto dto)
{
this.dto = dto;
}
public int Id
{
get { return dto.Id; }
set { dto.Id = value; }
}
}
public class Dto
{
public int Id { get; set; }
}
мотки за вашу помощь!
Торстен
Hi Derek, благодарит за ответ. Я согласен с вашими основными выводами в том, что, с первого взгляда, подход обертки, похоже, облегчает работу, где, как и в последующей реализации, могут возникать проблемы. Я обычно использую подход обертки для каких-либо примитивных/не редактируемых объектов, показанных в массовом порядке, где проверка и свободное соединение не являются проблемой. С уважением, Torsten – user2145393
Torsten, я согласен с вашими мыслями по этому вопросу.В этой конкретной теме в архитектуре программного обеспечения нет единого решения для всех вариантов, и для определенных сценариев он может использоваться там, где недостатки не являются проблемой. –