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)?
Respuesta
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.
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
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
xVal se usó con ASP.NET MVC 1.0 y actualmente está en desuso –
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.
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
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
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
- 1. Bloques de validación de Enterprise Library
- 2. Validación de primavera vs validación de Hibernate usando la anotación
- 3. Validación de formularios de jQuery Mobile: ¿qué complemento elegir?
- 4. Marco de validación en C#?
- 5. Errores de validación de primavera no mostrados
- 6. Bloque de validación frente a Nhibernate.Validator
- 7. primavera @MVC y @RequestParam validación
- 8. Recomendación para un marco de validación de ASP.NET Webforms Marco de validación
- 9. Personalizar error de validación de primavera
- 10. JavaScript vs validación de ASP.NET, ¿cuál elegir?
- 11. Validación de JavaScript: caracteres especiales de bloque
- 12. validación de la primavera con @Valid
- 13. Marco de validación de Javascript para Backbone.js
- 14. Validación de frijol VS validación JSF
- 15. validación jQuery validación personalizada sin agregar validación de espacio
- 16. múltiples campos de validación utilizando Validación remoto
- 17. Estrategia de validación JPA
- 18. Formulario marco juego de validación 2.0
- 19. reglas de validación personalizadas validación Fluido
- 20. marco de validación basado en anotaciones
- 21. ¿Qué marco de validación recomendaría para los proyectos .net?
- 22. condicional de validación usando Fluido Validación
- 23. Validación de Entity Framework
- 24. Validación de Jquery: ¿muestra el resumen de validación durante la validación?
- 25. Marco de validación de formularios de Javascript: solicitud de revisión
- 26. de validación en jqGrid
- 27. Validación de WPF: Borrado de todos los errores de validación
- 28. ELMAH vs Enterprise Library Bloque de manejo de excepciones
- 29. O bien O validación requerida
- 30. Enterprise Library registro Bloque no registrar
¿Web o escritorio? ¿Estás usando otros bloques entlib? ¿Podrías por favor especificar la arquitectura? – boj
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 –
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