Домен против DTO против ViewModel - как и когда их использовать?
В многослойном проекте с Доменным уровнем (DL) / Бизнес (сервисным) уровнем (BL) / Презентационным уровнем (PL), каков наилучший подход для доставки сущностей на уровень презентации?
DO => Domain Object;
DTO = Domain Transfer Object;
VM => View Model;
V => View;
Опция 1:
DL => DO => BL => DTO => PL => VM => V
Этот вариант кажется наилучшей практикой, но также кажется тяжелым для поддержания.
Вариант 2:
DL => DO => BL => DTO => PL => V
Этот вариант кажется не очень хорошей практикой, но, поскольку DTO почти идентичны виртуальной машине, мы можем передать его непосредственно в View, и его внедрение и поддержка менее сложны.
Является ли эта опция надежной и для нескольких макетов, например, для мобильных устройств мне может потребоваться меньше информации от BL, поэтому мне понадобится другая виртуальная машина для этого конкретного макета?