====== Serviços e Validadores ====== As classes de serviços implementam as interfaces de serviços e herdam a classe //ServicoPadrao//, que deve ser tipada pelo Dto e o Objeto de Negocio da classe referente ao serviço. Como os serviços são consumidos por camadas de usuário, a troca de dados ocorre através dos Dto’s e os objetos de negocio, sendo os Dto’s visíveis à camada de usuário e os objetos de negocio utilizado pelas demais camadas para busca e persistência de dados. A classe //ServicoPadrao// disponibiliza as funções de serviços genéricas implementadas para uso dos repositórios no seu contexto padrão. Funções extras desenvolvidas nas classes do repositório necessitam de uma função dedicada na camada de serviço para uso na camada de usuário. As figuras a seguir são os exemplos da classe de serviço, a //ServicoPadrao// e suas funções e o conversor. {{ :pres:gerti:construcao_dos_modulos:servicos:servicos:solution_crud_servico_servicos.png?direct |Classe de Sevico}} {{ :pres:gerti:processos_de_ti:solution_crud_servico_servicopadrao.png?direct |Classe de ServicoPadrao}} Para persistência de dados uma boa pratica é a validação dos dados antes de uma operação no banco de dados. Existe no TCE Compartilhado uma classe chamada //ValidadorPadrao//, figura abaixo. {{ :pres:gerti:processos_de_ti:solution_crud_servico_validadores_validadorpadrao.png?direct | Classe ValidadorPadrao}} As funções padrões da classe fazem apenas validações padrões de objeto e alguns atributos. Validações especificas devem ser tratadas, um exemplo é existência de atributos de relacionamento entre tabelas. Através da classe //AbstractValidator// a função //RuleFor// faz a chamadas das funções especificas para tratar cada validação na forma de //LINQ//. As funções //Rulefor// devem ser chamadas pelo //override// das funções padrão da classe herdada. {{ :pres:gerti:processos_de_ti:solution_crud_servico_validadores.png?direct |}}