O DTO - Data Transfer Object

.NET

23/07/2013

Prezados colegas,

Estou colocando este tema em discussão porque ele torna a comunidade dividida. Eu uso muito o padrão DTO junto com o padrão Fachada dentro da Camada de Negócio como uma forma de isolar as camadas de Negócio e apresentação da Camada de Acesso a Dados. Porém, muitos dizem que o DTO "fere" um pouco a Orientação a Objetos, por ele ser apenas um objeto para Entrada e Saída e nada mais, não tendo muita responsabilidade e não trazer nada mais além disso. O que vocês acham sobre isso?
Gabriel Simas

Gabriel Simas

Curtidas 0

Respostas

Renato Groffe

Renato Groffe

23/07/2013

Gabriel,


Da minha parte, eu também prefiro usar o DTO nos projetos em que desenvolvo. Acho esse padrão uma boa solução para não deixar um projeto amarrado a uma tecnologia de acesso a dados.

Já vi o pessoal usar bastante o Entity Framework diretamente. Não acho isso algo muito legal. Muitas vezes isso pode acabar em erros na manipulação de objetos, porque a conexão de acesso à base não está mais aberta.

Para evitar isso, se for o caso o caso de usar o Entity Framework, converto o que vem de um modelo gerado a partir dele em DTOs. Se o projeto no futuro for utilizar o NHiberante, as camadas de negócio e apresentação não sofrerão mudanças significativas (teoricamente tudo isso seria transparente), já modificações seriam feitas apenas na camada de acesso a dados.

Espero que isso tenha te ajudado. Não existe uma fórmula exata para tudo, mas é um caminho que acredito ser bem flexível.


Renato

GOSTEI 0
Gabriel Simas

Gabriel Simas

23/07/2013

Gabriel,


Da minha parte, eu também prefiro usar o DTO nos projetos em que desenvolvo. Acho esse padrão uma boa solução para não deixar um projeto amarrado a uma tecnologia de acesso a dados.

Já vi o pessoal usar bastante o Entity Framework diretamente. Não acho isso algo muito legal. Muitas vezes isso pode acabar em erros na manipulação de objetos, porque a conexão de acesso à base não está mais aberta.

Para evitar isso, se for o caso o caso de usar o Entity Framework, converto o que vem de um modelo gerado a partir dele em DTOs. Se o projeto no futuro for utilizar o NHiberante, as camadas de negócio e apresentação não sofrerão mudanças significativas (teoricamente tudo isso seria transparente), já modificações seriam feitas apenas na camada de acesso a dados.

Espero que isso tenha te ajudado. Não existe uma fórmula exata para tudo, mas é um caminho que acredito ser bem flexível.


Renato



Olá Renato,

Obrigado pela resposta, como você pode ver também utilizo este padrão e para mim tem sido bastante útil e protege o código definitivamente, mas como você sabe tem gente que não gosta dele pelos motivos que conversei e eu queria entender o porquê disso.

Forte Abraço
GOSTEI 0
POSTAR