Домен против 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, поэтому мне понадобится другая виртуальная машина для этого конкретного макета?

Ответы на вопрос(4)

Ваш ответ на вопрос