2009-04-15 10 views
7

Estoy tratando de elegir uno de los marcos de validación para una aplicación principal, y aunque ambas opciones me parecen atractivas, me preguntaba si hay ventajas y desventajas específicas que deba tener en cuenta antes de comprometerme con una u otra.¿Qué marco de validación elegir: Validación de primavera o Bloque de aplicación de validación (Enterprise LIbrary 4.0)?

+0

¿Web o escritorio? ¿Estás usando otros bloques entlib? ¿Podrías por favor especificar la arquitectura? – boj

+0

Es para una aplicación web. Podría usar otros bloques entlib, como seguridad y registro, ya que se requerirá en la aplicación. Sin embargo, no usaré Unity, ya que ese bit será manejado por Spring.NET –

+1

No tengo experiencia con Spring.NET, pero soy un gran admirador de los bloques EntLib. Debes leer http://weblogs.asp.net/ricardoperes/archive/2009/03/11/asp-net-validation-with-the-enterprise-library-validation-block.aspx y http: //www.davidhayden .com/blog/dave/archive/2007/02/28/PropertyProx – boj

Respuesta

6

La validación con atributos no es la mejor solución en mi opinión. En primer lugar, debe hacer referencia a la infraestructura en el modelo de dominio. En segundo lugar, no tienes ninguna posibilidad de agregar validación a las clases compiladas. Por último, no puedes validar la lógica compleja con atributos y tienes que hacer el método Validate para la entidad y eso simplemente parece incómodo.

En mi opinión, la validación debe separarse en un objeto diferente. Por ejemplo, IValidator donde podría definir la validación como reglas. El uso de framework como xVal ayuda a hacer la validación en la capa de presentación con JavaScript.

Es posible que desee buscar xVal y FluentValidation for .NET. NHibernate Validator 1.2 alpha también tiene sintaxis fluida y está integrado con xVal (no está seguro de alfa, pero debería ser 1.0).

Enterprise Validation Block también tiene algunos lados negativos. Las propiedades de mi entidad terminaron teniendo 3 filas de atributos y empeoraron la legibilidad. Intentar agregar validación con operadores AND u OR es bastante doloroso también.

+1

El Bloque de aplicaciones de validación no tiene que ser usado con atributos. Contiene un enfoque de validación basado en la configuración. Lea este artículo: http://www.cuttingedge.it/blogs/steven/pivot/entry.php?id=46 – Steven

+1

Si bien prefiero la configuración basada en la validación sobre la configuración basada en atributos por la misma razón que describe Marek, VAB 5.0 le permite defina las validaciones usando la técnica de la clase buddy que introdujo DataAnnotations. – Steven

+0

xVal se usó con ASP.NET MVC 1.0 y actualmente está en desuso –

3

Una cosa que he encontrado con los bloques de la Biblioteca Empresarial es que puede obligarte a usar otros bloques que no deseas o no necesitas. Por ejemplo, Validación podría usar el bloque de registro, pero estaba contento con su propio sistema de registro. ahora su aplicación registra cosas de diferentes maneras. Dicho esto, me gustó el aspecto del bloque Validación en Ent Lib. No he jugado con Spring.NET aunque.

+0

Nunca tuve este problema con el Bloque de la aplicación de validación. ¿Puedes indicar el código o la ubicación donde VAB llama al Bloque de la aplicación de registro? – Steven

+1

Eché un vistazo más profundo a esto, pero no hay llamadas directas desde los ensamblados de Validación de la Biblioteca Enterprise a ninguno de los ensamblados de registro. Creo que su aplicación utilizó la parte de registro directamente. En mis aplicaciones, solo publico los ensamblados que son específicos del VAB. Para VAB 5.0 necesita: 'Common',' Validation', 'ServiceLocation',' Unity', 'Unity.Configuration', y' Unity.Interception'. – Steven

+0

Esto podría haber sido en una versión anterior. Cuando creo que vi esto, era la versión 2.0 de Enterprise Library. – SteveM

Cuestiones relacionadas