Domain vs DTO vs ViewModel - ¿Cómo y cuándo usarlos?

En un proyecto de capas múltiples con capa de dominio (DL) / capa de negocios (servicio) (BL) / capa de presentación (PL), ¿cuál es el mejor enfoque para entregar entidades a la capa de presentación?

DO => Domain Object;
DTO = Domain Transfer Object;
VM => View Model;
V => View;

Opción 1:

DL => DO => BL => DTO => PL => VM => V

Esta opción parece ser la mejor práctica, pero también parece ser una tarea difícil de mantener.

Opcion 2:

DL => DO => BL => DTO => PL => V

Esta opción no parece ser una buena práctica, pero como DTO es casi idéntica a la VM, podemos pasarla directamente a la Vista y es menos doloroso de implementar y mantener.

¿Esta opción también es confiable para diseños múltiples, por ejemplo, para dispositivos móviles? Es posible que necesite menos información del BL, por lo que necesitaré una VM diferente para este diseño en particular.

Respuestas a la pregunta(4)

Su respuesta a la pregunta