none
ASP.NET MVC - Onde validar dados introduzidos? RRS feed

  • Discussão Geral

  • Boas,

    Tenho andado a estudar um bocado design patterns, e uma questão que me está a intrigar é em que camada se deve fazer a validação de dados.

    Podemos fazê-la no lado do cliente com Javascript, e no Model também. Mas imaginêmos que se trata de um repository que vai fazer uma consulta á base de dados consoante uma string recebida. Este método do repository tanto pode ser chamado por um cliente, como por outra aplicação que outro programador está a desenvolver usando a nossa assembly.

    Por isso como fazem para validar? Criam Services para chamarem os Repository, e é nesses Services que realizam a validação?

    Abraços


    http://twitter.com/guilhermegeek http://weblogs.pontonetpt.com/guilhermecardoso http://geekswithblogs.net/guilhermecardoso
    • Movido Ricardo Oneda quinta-feira, 27 de janeiro de 2011 12:31 (De:.NET Development - Geral)
    quinta-feira, 27 de janeiro de 2011 02:39

Todas as Respostas

  • Guilherme,

    Esse problema das validações é muito comum. Eu costumo tratá-lo da seguinte forma:

    - Validações de "required" ou tipo de campo, eu faço diretamente na página quando possível, somente para evitar o tráfego desnecessário da informação para o servidor (consumo de banda a toa).

    - Validações complexas, eu encapsulo numa camada de negócio.

    Essa camada de negócio pode ser modelada a lá "DDD" ou qualquer outra abordagem. Gosto muito da abordagem do Spring.NET também. O controller faz o parse do request, e repassa essas informações para as classes de negócio e estas fazem as validações mais complexas.

    Essa abordagem eu uso principalmente pois existem casos onde uma mesma entidade de negócio pode ter mais de um ponto de acesso pela UI. Ex.: Uma página de "importação" de pedidos e uma página de "cadastro" de pedidos. Ambas podem (e devem!) usar a mesma regra de negócio.

     

    Abraço,

    Eric

    quinta-feira, 27 de janeiro de 2011 15:40
  • Olá Guilherme!

    Penso da seguinte forma:

    a) Se é validação de input, faço nas camadas mais próximas da GUI (jquery e model mais perto da GUI)

    b) Se não é validação de input, como regras de negócios complexas, faço-as na camada de negócio

    No meu caso isso me ajuda a decidir aonde vai o que.

    Abraço

    Hamilton.


    HJ
    quinta-feira, 3 de fevereiro de 2011 10:34
  • Obrigado pelo vosso feedback.

    Eu tenho estado a fazer a validação em jQuery e nos Models (para aproveitar o uso dos atributos do DataAnotations do MVC 3), e depois realizo uma outra validação sempre noutra camada de negócios (normalmente nas Services)-

    Vou ler um pouco sobre Spring.NET e tentar perceber o que essa Framework tem para ofercer ;)

    Abraço


    http://guilhermecardoso.pt.vu
    sexta-feira, 18 de fevereiro de 2011 21:11