Didática e exemplificação impecáveis! Muitíssimo obrigado por compartilhar conhecimento assim... como sugestão de próximo vídeo: gostaria de aprender sobre apis com clean code em dotnet, ou ao menos consumir uma
Falaa Pedro. Muito obrigado pelas palavras e muito obrigado por estar aqui conosco no canal. Fico realmente feliz que estejas curtindo o conteúdo. Sobre a sua sugestão, com certeza ela é realmente muito válida. Hoje inicia no canal uma nova série de vídeos chamada ".NET para iniciantes", onde vamos ver desde como criar um projeto, até o consumo de um API. Então fica ligado que esse tipo de conteúdo vai começar a aparecer no canal :). Grande abraço.
Gosto de usar explicit operator ao inves do AutoMapper. Uma lib a menos, um controle maior sobre minhas mãos e uso de um recurso nativo. No mais show de bola
Olá, muito bom conteúdo. Uma dúvida. Vc acha interessante utilizar a biblioteca Mapster no lugar do AutoMapper? a experiencia que tive com Mapster foi bem interessante devido a não ser necessário criar profiles de conversão (desde que sigamos a convenção de que ambas as classes possuam atributos seguindo o mesmo padrão de nomemclatura)
Opaaa! Eu prefiro Mapster do que AutoMapper. Acho mais enxuto de usar. Porém, mostrei Mapper pelo motivo de ser o mais encontrado em empresas, no dia a dia. Eu já tenho uma pauta aqui para fazer conteúdo sobre o Mapster...Grande abraço.
Com todo respeito, mas isso foi igual trocar 6 por meia dúzia além de fazer alocações de memorias desnecessárias usando AutoMapper, faria algum sentido a DTO nesse exemplo se fosse para retornar apenas algumas propriedades para o frontend.
Opaaa! Usar DTO é adicionar uma camada a mais de segurança na aplicação, que é a camada de transferência de dados. O intuito aqui é não expor a modelo, que é o coração da nossa aplicação. Em aplicações maiores, é muito comum ver esta prática. Além de ter uma melhor segurança, com a DTO é possível utilizar demais recursos, como projectoTo() ou qualquer outro recurso. Sobre a alocação e memória, não será algo que irá impactar a aplicação. AutoMapper é comumente utilizado e sempre recebe melhorias referente a memória. Você pode tentar utilizar o Mapster também. Isso não é escrito na pedra, é somente uma visão (que eu acredito ser importante e eu utilizo) sobre como desenvolver softwares melhores. Grande abraço.
Gostaria de tirar uma dúvida. De acordo com o seu vídeo, o correto é expor o DTO e não a Entidade, até ai tudo bem, mas porque exatamente fazemos isso? Quando você fala sobre não expor o objeto do banco de dados, você quer dizer em qual sentido? Porque se for pra pessoa não ter acesso aos nomes dos atributos, o DTO está exatamente com os mesmos nomes...
Faala Gabriel. Quando falamos em Modelo (ou Entity em alguns casos) estamos falando especificamente do espelho do nosso banco de dados. Não é aconselhável transportar dados tendo em vista diretamente a modelo. Se temos esta modelo na Controller, vamos expor externamente nossa modelo. O DTO nada mais é do que uma forma segura de transportar estes dados, e não somente pelo nome da propriedade, mas sim por todo o mapeamento que temos dentro da API. Por isso que com a DTO podemos validar, analisar e depois sim aplicar um mapping com a modelo, ou seja, estaremos atribuindo à modelo somente depois de tudo validado e revisado. Claro que existem dezenas de formas de fazer isso (DDD explica bem isso), mas DTO é uma excelente forma para iniciar. Grande abraço.
@@giarettaio Posso estar enganado e claro, estou em busca de melhorar meus padrões, mas validar DTO não é errado? Digo, ele é uma camada de transporte e apenas isso, não seria incorreto usar o DTO para validação? E também, eu me referi ao fato de que uma entidade e um DTO, claro, tratando todos os campos entre os 2 (Ou seja, não estou privando atributo nenhum de ser exibido) teriam a mesma funcionalidade, não? Digo porque deu a entender que em todo e qualquer caso se deve usar DTO, quando ao que me parece só devemos usar DTO quando precisamos lidar com dados a menos do que o escopo total da entidade. Isso é uma dúvida antiga minha, só que nunca consegui achar nada explicando direito, não nesse ponto, obrigado por responder meu comentário!!!
Fico feliz quando procuro um conteúdo e vejo um vídeo seu nas recomendações
Valeeu Junior. Tmj demais. Abraço.
Conteúdo cada vez melhor, parabéns continue compartilhando conhecimento, isto nos ajuda muito.
Muito obrigado, fico realmente feliz que esteja curtindo. Grande abraço
Parabéns pelo conteúdo, continue com essa qualidade top!
Valeeu Raick. Feliz em ler isto e ter você aqui no canal. Grande abraço.
Uma aula de API! Valeu mestre.
Muito obrigado, de coração ❤️
Muito bem explicado. Show!!!
Tmj, muito obrigado!
Didática e exemplificação impecáveis! Muitíssimo obrigado por compartilhar conhecimento assim... como sugestão de próximo vídeo: gostaria de aprender sobre apis com clean code em dotnet, ou ao menos consumir uma
Falaa Pedro. Muito obrigado pelas palavras e muito obrigado por estar aqui conosco no canal. Fico realmente feliz que estejas curtindo o conteúdo.
Sobre a sua sugestão, com certeza ela é realmente muito válida. Hoje inicia no canal uma nova série de vídeos chamada ".NET para iniciantes", onde vamos ver desde como criar um projeto, até o consumo de um API. Então fica ligado que esse tipo de conteúdo vai começar a aparecer no canal :). Grande abraço.
@@giarettaio TOP! Indicando já para os companheiros
Explicação excelente, obrigado!!
Tmj demais. Abraço.
fazer DTO com Extension Methods é tao rapido e melhora tanto a performance com relação ao AutoMapper
Gosto de usar explicit operator ao inves do AutoMapper. Uma lib a menos, um controle maior sobre minhas mãos e uso de um recurso nativo. No mais show de bola
Com certeza. Boa abordagem também. Tmj. Abraço.
Olá, muito bom conteúdo.
Uma dúvida. Vc acha interessante utilizar a biblioteca Mapster no lugar do AutoMapper? a experiencia que tive com Mapster foi bem interessante devido a não ser necessário criar profiles de conversão (desde que sigamos a convenção de que ambas as classes possuam atributos seguindo o mesmo padrão de nomemclatura)
Opaaa! Eu prefiro Mapster do que AutoMapper. Acho mais enxuto de usar. Porém, mostrei Mapper pelo motivo de ser o mais encontrado em empresas, no dia a dia. Eu já tenho uma pauta aqui para fazer conteúdo sobre o Mapster...Grande abraço.
Com todo respeito, mas isso foi igual trocar 6 por meia dúzia além de fazer alocações de memorias desnecessárias usando AutoMapper, faria algum sentido a DTO nesse exemplo se fosse para retornar apenas algumas propriedades para o frontend.
Opaaa! Usar DTO é adicionar uma camada a mais de segurança na aplicação, que é a camada de transferência de dados. O intuito aqui é não expor a modelo, que é o coração da nossa aplicação. Em aplicações maiores, é muito comum ver esta prática. Além de ter uma melhor segurança, com a DTO é possível utilizar demais recursos, como projectoTo() ou qualquer outro recurso.
Sobre a alocação e memória, não será algo que irá impactar a aplicação. AutoMapper é comumente utilizado e sempre recebe melhorias referente a memória. Você pode tentar utilizar o Mapster também. Isso não é escrito na pedra, é somente uma visão (que eu acredito ser importante e eu utilizo) sobre como desenvolver softwares melhores. Grande abraço.
Gostaria de tirar uma dúvida.
De acordo com o seu vídeo, o correto é expor o DTO e não a Entidade, até ai tudo bem, mas porque exatamente fazemos isso?
Quando você fala sobre não expor o objeto do banco de dados, você quer dizer em qual sentido? Porque se for pra pessoa não ter acesso aos nomes dos atributos, o DTO está exatamente com os mesmos nomes...
Faala Gabriel. Quando falamos em Modelo (ou Entity em alguns casos) estamos falando especificamente do espelho do nosso banco de dados. Não é aconselhável transportar dados tendo em vista diretamente a modelo. Se temos esta modelo na Controller, vamos expor externamente nossa modelo. O DTO nada mais é do que uma forma segura de transportar estes dados, e não somente pelo nome da propriedade, mas sim por todo o mapeamento que temos dentro da API. Por isso que com a DTO podemos validar, analisar e depois sim aplicar um mapping com a modelo, ou seja, estaremos atribuindo à modelo somente depois de tudo validado e revisado. Claro que existem dezenas de formas de fazer isso (DDD explica bem isso), mas DTO é uma excelente forma para iniciar. Grande abraço.
@@giarettaio Posso estar enganado e claro, estou em busca de melhorar meus padrões, mas validar DTO não é errado?
Digo, ele é uma camada de transporte e apenas isso, não seria incorreto usar o DTO para validação?
E também, eu me referi ao fato de que uma entidade e um DTO, claro, tratando todos os campos entre os 2 (Ou seja, não estou privando atributo nenhum de ser exibido) teriam a mesma funcionalidade, não?
Digo porque deu a entender que em todo e qualquer caso se deve usar DTO, quando ao que me parece só devemos usar DTO quando precisamos lidar com dados a menos do que o escopo total da entidade.
Isso é uma dúvida antiga minha, só que nunca consegui achar nada explicando direito, não nesse ponto, obrigado por responder meu comentário!!!