2011-06-07 11 views
21

¿En qué circunstancias elegiría FluentValidation (FV) sobre ASP.NET MVC 3 way?¿Por qué usar fluentvalidation en lugar de validación de ASP.NET MVC?

¿Cuáles son las ventajas de FV sobre MVC? Me doy cuenta de que con esto último tenemos que escribir mucho más código y podemos dejar el código en blanco con anotaciones de datos. Además, parece ser más fácil escribir validación personalizada usando FV que MVC. Sin embargo, con MVC es posible usar la anotación de datos y conectar la validación de jQuery en.

Entonces, ¿qué opinión le haría elegir una sobre la otra? ¿Hay circunstancias en las que incluso usarías ambas?

Respuesta

28

La validación fluida es una forma de configurar objetos de validación dedicados, que usaría cuando quiera tratar la lógica de validación como algo separado de la lógica comercial. El paradigma de programación orientada a aspectos (AOP) permite la separación de preocupaciones transversales dentro de un sistema, y ​​la validación es una de esas preocupaciones. La separación de la validación ayuda a limpiar el código de su dominio y hacerlo más cohesivo, además de brindarle un lugar único para buscar la lógica de validación.

La validación basada en anotaciones MVC es una forma muy "barata" de obtener una validación básica en una aplicación, sin tener que crear objetos de validación dedicados, crear un sistema de validación que los organice y conecte todos juntos. Es muy fácil de configurar, pero puede hacer que sus objetos de dominio estén menos limpios.

Para sistemas pequeños donde toda la lógica de validación puede manejarse usando anotaciones, recomendaría simplemente usar anotaciones, porque son muy fáciles de configurar. Para sistemas más grandes y más complejos, recomendaría separar el problema de validación utilizando objetos validador.

Personalmente me gusta usar ambos enfoques: agregar atributos de validación a las clases de ViewModel (lo que significa que las anotaciones no saturan mis objetos de dominio), así como tener objetos validador dedicados dentro de mi capa de dominio. Esta es una pequeña cantidad de duplicación, pero usar anotaciones es tan rápido y fácil, me parece que vale la pena el costo de mantenimiento adicional.

+0

+1 especialmente para los párrafos tercero y cuarto. A menudo veo a la gente complicando las cosas y en el mundo real (donde uno tiene que entregar algo en algún momento) es importante hacer que la solución se adapte al problema. La suya suena como un enfoque laudablemente pragmático. –

+0

Punto tomado. Sin embargo, cuando dices que "la validación basada en anotaciones MVC es una forma muy 'barata' de obtener una validación básica en una aplicación", supongo que estás hablando de validación inmediata, es decir, NO de validación personalizada. De lo contrario, debemos estar haciendo algo mal, ya que nos está tomando el tiempo para obtener la validación personalizada en el modo MVC como se indica en el enlace del OP. En el último enlace, hay una separación de preocupaciones de la que usted habla aunque, por supuesto, hay anotaciones de datos, pero la clase de validación personalizada está separada. – DavidS

+2

@DavidS - Me refiero a los tipos de validador incorporados, sí, aunque supongo que una vez que haya superado la barrera de trabajar con validadores personalizados también sería bastante barato de usar. FV le brinda "un sistema de validación que organiza [validadores] y lo conecta [s] todo junto" a través de los atributos de 'Validator' del nivel de clase, lo que reduce la molestia; Aún diría que el factor determinante para decidir qué ruta tomar debería ser la complejidad de la validación requerida. –

Cuestiones relacionadas