De que se trata o artigo

Todo projeto de software possui regras de negócios que são essenciais para o sucesso da aplicação. Muitas destas regras são tratadas por meio de validações em nosso modelo de negócio. Validações de dados são características que algumas ferramentas Microsoft já proporcionam nativamente através de anotações em nosso modelo. Neste artigo vamos conhecer uma ferramenta chamada Fluent Validation, que proporciona um novo conceito de validação para suas entidades, além de fornecer suporte a diversos tipos de camadas de apresentação como, ASP. NET MVC, Silverlight, WP7 e WPF.

Em que situação o tema é útil

Esta ferramenta é muito útil em cenários onde desejamos realizar validações básicas e customizadas em nosso modelo de negócio. Através de uma interface fluente, esta ferramenta torna o processo de validação simples e flexível, além de deixar o código mais elegante.

Fluent Validation

O Fluent Validation é uma biblioteca de validação gratuita e de código aberto, além de ser uma excelente alternativa para realizar validações em modelos de negócios, proporciona um design de código amigável e separado do código da entidade. Munido das funcionalidades básicas de validação, este componente proporciona uma maneira simples de customizar validações complexas de regras de negócios, permite injeção de dependência e fácil integração com o ASP.NET MVC e outras tecnologias Microsoft. Neste artigo vamos conhecer as facilidades de aplicar esta ferramenta em projetos ASP.NET MVC e conseguir tirar benefícios.

Certamente você já trabalhou em alguma aplicação Web onde a entrada de dados é algo essencial para que o fluxo dessa aplicação possa ter uma continuidade normal e certamente, esta entrada de dados possuiu regras que deviam ser checadas antes de serem aceitas. Este processo de checagem da informação é chamado Validação e há muitas ferramentas de desenvolvimento que possui um meio nativo e básico de realizar este processo. No ASP.NET Webforms há os Validators, já no ASP.NET MVC estas validações são realizadas através das anotações que decoram propriedades de nosso modelo.

Os meios nativos de realizar a validação são simples até o momento em que desejamos realizar algo com maior grau de complexidade, ou seja, customizar este processo pode ser trabalhoso. Outro problema é que geralmente acoplamos estas regras de validação ao nosso modelo, o que gera dependência maior de nosso modelo para realizar esta validação.

Fluent Interface

Fluent Interface nada mais é do que implementar uma API de tal forma que, através de métodos encadeados, a leitura e compreensão destes se tornem mais legíveis. Por exemplo: em um cenário hipotético é preciso registrar em uma classe chamada Meeting, que representa uma reunião, sua duração em horas e minutos baseando na hora em que irá iniciar e na hora que irá terminar. Para representar a hora de início e término foi criada a classe TimePoint. Para representar o período todo foi criada a classe TimeInterval. A ideia é que através de um método seja possível recuperar um período. A seguir, a Listagem 1 ilustra como é a forma tradicional de codificação.

Listagem 1. Forma Tradicional de Codificação

TimePoint fiveOClock, sixOClock;
  TimeInterval meetingTime = new TimeInterval(fiveOClock, sixOClock);

A Listagem 2 ilustra como seria o mesmo código utilizado na Listagem 1 utilizando Fluent Interface.

Listagem 2. Codificação com Fluent Interface

TimeInterval meetingTime = fiveOClock.until(sixOClock); 

Sem dúvida é muito mais legível e compreensível a aplicação de Fluent Interfaces.

Lambdas

Lambdas são funções anônimas construídas de forma diferente. Geram delegates que podem ser chamados posteriormente, como qualquer delegate. A construção básica de uma Lambda é feita com um sinal de igual seguido de um sinal de maior, como se fosse uma seta para a direita. Em inglês, lê-se esse sinal como gesto, algo como “vai para”. A construção x => x + 5 seria então lida como “x vai para x mais 5”.

Fluent Validation

O FluentValidation é uma biblioteca de validação para o .Net Framework que fornece uma interface fluente, que utiliza Expressões Lambdas para construir regras de validação para seus objetos de negócios. Este componente foi desenvolvido por um inglês chamado Jeremy Skinner (@JeremySkinner) e vem sendo constantemente atualizado pelo autor e outros colaboradores. Atualmente o componente encontra-se na versão 3.3 e fornece suporte ao ASP.NET MVC 3 com compatibilidade ao ASP.NET MVC 4 Beta (NuGetpackage ID: FluentValidation.Mvc4) e Silverlight 4+, operando apenas sobre o .Net Framework 4.0.

Métodos Anônimos

Os métodos anônimos dispensam a criação de um método específico para operações que somente necessitam ser executada uma única vez. A Listagem 3 exibe um método anônimo:

...

Quer ler esse conteúdo completo? Tenha acesso completo