Muitas pessoas ficam perdidas ao se depararem com DTO e ViewModel, sobre a sua usabilidade/conceito, que de certa forma geram dúvidas.

Neste artigo, tentarei trazer a diferença entre esses dois conceitos através de um ponto de vista breve e direto.

Data Transfer Object (DTO)

Data Transfer Object (DTO) é um padrão, utilizado para fazer o transporte de dados entre diferentes componentes/instâncias/processos de um sistema.

Sabe aquela requisição cheia de parâmetros? O DTO é uma ótima ideia para a otimização dessa comunicação de requisição de uma forma mais simples, agrupando um conjunto de atributos em uma classe simples.

Nem sempre os dados que usamos refletem inteiramente na nossa Modelo. O DTO traz aquilo que precisamente iremos usar em determinado processo.

Obs.: Vale ressaltar que o DTO não possui comportamento e estado, é somente um contêiner para transferência de dados.

 

ViewModel

A ViewModel está ligada aos dados que vão ser expostos na interface para o usuário. Nela você passa somente os dados que deseja que sejam exibidos para visualização.

Além de poder fazer validações dos atributos, ela pode também conter métodos de formatação de tais. Possuindo assim estado e comportamento diferentemente do DTO que não possui.

Podemos considerar a ViewModel como um agrupador de Models, no qual estão todas as propriedades que são necessárias para apresentação/exibição.

Carolina Felix

Paulistana, entrou na Lambda em 2021 pelo programa dev do futuro, no qual se formou e agora é dev do presente e ama trabalhar com agilidade. Gosta de viagens e de conversar sobre testes automatizados.