Árvore de páginas

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.

...

Para termos suporte a estrutura de Data Transfer Objects do TNF, instale via nuget o pacote Tnf.Dto disponível em: https://www.myget.org/F/tnf/api/v3/index.json.

Porque

...

Utilizar?

Abstração da camada de domínio

...

 Para o caso de estar trabalhando com algum framework ORM, a maioria deles contem suporte a lazy load dando abertura para que entidades sejam carregas de forma errada, trazendo muitas estruturas para a sua aplicação sem que elas sejam necessárias.

 O uso de DTOs evitam problemas como os descritos acima porque são criados para retornar estruturas especificas de dados para que nenhuma informação excessiva seja trafegada erroneamente.

Estrutura para Envio e Resposta de Mensagens

No pacote Tnf.Dto estão contidas algumas estruturas:

 DtoRequestBase

 Essa classe representa todo objeto de envio tratado como "request" em sua aplicação. Você pode realizar a herança dessa classe ao criar um parâmetro para a entrada de um método por exemplo.

Notification

Essa classe representa uma notificação. Principalmente usada para colocar o Notification pattern em prática retornando estruturas de notificações ao invés de exceções pela aplicação.

Dessa forma internamente esta classe contém uma estrutura como: Code, Message, Exception e Internal Code.

Todos esses atributos são usados para a validação de entidades dentro do TNF que será visto em um próximo capitulo quando falaremos de Criação e Validação de Entidades de Domínio.

DtoResponseBase

Essa classe representa todo objeto de envio tratado como "response" em sua aplicação.

Quando você conter um método de validação por exemplo em um serviço, que deve retornar notificações caso a entidade não esteja apta a ser inserida, você pode criar um classe que representa essa resposta fazendo a herança dessa estrutura.

Essa classe possui internamente uma estrutura de Notification com métodos que possibilitam o gerenciamento e validação de erros como: AddNotification e ErrorExists.

Caso você não deseje realizar a herança da classe você pode utilizar ela de forma genérica: DtoResponseBase<TResult> : onde TResult será uma propriedade nomeada Data para retorno de alguma estrutura existente.