Qual é a diferença entre um objeto MVC Model, um objeto de domínio e um DTO

Qual é a diferença entre um objeto MVC Model, um objeto de domínio e um DTO?

Meu entendimento é:

Objeto do modelo MVC:

Modela os dados a serem exibidos por uma visualização correspondente. Pode não ser mapeado diretamente para um objeto de domínio, ou seja, pode incluir dados de um ou mais objetos de domínio.

Lado do clientePode conter lógica de negócios. Por exemplo. validações, propriedades calculadas, etc.Nenhum método relacionado à persistência

Objeto de domínio:

Um objeto que modela o objeto do mundo real no domínio do problema, como Reserva, Cliente, Pedido, etc. Usado para manter os dados.

Lado do servidorNenhuma lógica de negócios

DTO (objeto de transferência de dados):

Um objeto usado para transferir dados entre camadas quando as camadas estão em processos separados, por exemplo de um banco de dados para um aplicativo cliente. Permite uma única transação através da ligação, em vez de várias chamadas ao buscar dados correspondentes a vários objetos de domínio. Um DTO contém apenas dados e métodos de acessador e não há lógica presente. Os dados são de uma transação de banco de dados específica, portanto, podem ou não ser mapeados diretamente para um objeto de domínio, pois podem incluir dados de um ou mais objetos de domínio.

Usado nos lados do servidor e do cliente, conforme é passado entre as camadasNenhuma lógica de negóciosNenhum método relacionado à persistência

Então, as perguntas:

O entendimento acima está correto? Estou perdendo alguns pontos-chave?

Existem razões para não usar objetos de Domínio como o Modelo MVC, supondo que os objetos de Modelo não exijam lógica de negócios extra?

Existem razões para não usar DTOs como o modelo MVC, supondo que os objetos do modelo não exijam lógica de negócios extra?

questionAnswers(5)

yourAnswerToTheQuestion