¿Cuál es la diferencia entre un objeto modelo MVC, un objeto de dominio y un DTO?

¿Cuál es la diferencia entre un objeto modelo MVC, un objeto de dominio y un DTO?

Mi entendimiento es:

Objeto modelo MVC:

Modela los datos que se mostrarán en una vista correspondiente. Es posible que no se asigne directamente a un objeto de dominio, es decir, puede incluir datos de uno o más objetos de dominio.

Lado del clientePuede contener lógica de negocios. P.ej. validaciones, propiedades calculadas, etc.No hay métodos relacionados con la persistencia.

Objeto de dominio:

Un objeto que modela objetos del mundo real en el dominio del problema como Reserva, Cliente, Pedido, etc. Se utiliza para conservar los datos.

Lado del servidorSin lógica de negocios

DTO (objeto de transferencia de datos):

Un objeto utilizado para transferir datos entre capas cuando las capas están en procesos separados, p. de una base de datos a una aplicación cliente. Permite una sola transacción a través del cable en lugar de múltiples llamadas al recuperar datos correspondientes a múltiples objetos de dominio. Un DTO contiene solo datos y métodos de acceso y no hay lógica presente. Los datos son para una transacción de base de datos particular, por lo que pueden o no asignarse directamente a un objeto de dominio, ya que pueden incluir datos de uno o más objetos de dominio.

Se usa tanto en el servidor como en el cliente, ya que se pasa entre capasSin lógica de negociosNo hay métodos relacionados con la persistencia.

Entonces, las preguntas:

¿Es correcto el entendimiento anterior? ¿Me estoy perdiendo algunos puntos clave?

¿Hay alguna razón para no usar los objetos de Dominio como el Modelo MVC suponiendo que los objetos del Modelo no requieren una lógica comercial adicional?

¿Hay alguna razón para no usar DTO como el modelo MVC suponiendo que los objetos del modelo no requieren lógica comercial adicional?

Respuestas a la pregunta(5)

Su respuesta a la pregunta