Domínio vs DTO vs ViewModel - Como e quando usá-los?
Em um projeto multicamadas com Camada de Domínio (DL) / Camada de Negócios (Serviço) (BL) / Camada de Apresentação (PL), qual é a melhor abordagem para entregar Entidades à Camada de Apresentação?
DO => Domain Object;
DTO = Domain Transfer Object;
VM => View Model;
V => View;
Opção 1:
DL => DO => BL => DTO => PL => VM => V
Esta opção parece ser a Melhor Prática, mas também parece pesada para manter.
Opção 2:
DL => DO => BL => DTO => PL => V
Esta opção não parece muito boa prática, mas como DTO são quase idênticos para a VM, podemos passá-lo diretamente para o View e é menos doloroso para implementar e manter.
Essa opção também é confiável para vários layouts, por exemplo, para dispositivos móveis? Talvez eu precise de menos informações do BL, então precisarei de uma VM diferente para esse layout específico?