He estado buscando en StackOverflow para una publicación similar y sí, hubo algunas discusiones sobre lo que estoy a punto de preguntar, pero decidí comenzar un nuevo tema.DDD y validación del lado del cliente
Supongamos que tiene una aplicación que utiliza el patrón de modelo de dominio, DDD y muchos otros patrones de diseño. Suponemos que tenemos una serie de soluciones que se enumeran a continuación:
- Solution.Model
- Solution.Repository
- Solution.Services
- Solution.Presentation
- Solution.UI.Web
La capa de experiencia del usuario será Solution.UI.Web y supondremos que será una aplicación ASP.NET WebForms. ¿cómo se aplica la validación del lado del cliente?
Hay una serie de cosas a considerar:
En primer lugar, no debería tener que golpear el servidor (s) aplicación/base de datos para devolver cualquier error de validación al cliente, sin embargo, podríamos poner en práctica validación del lado del servidor también, pero vamos a necesitar la validación del lado del cliente también.
En segundo lugar, no queremos implementar las reglas de validación en la capa de experiencia del usuario. Eso es porque si su aplicación es una aplicación web y luego decide crear un cliente WinApp, tendrá que implementar las reglas de validación una vez más -> pesadilla de mantenimiento.
Un enfoque simple sería implementar su lógica de validación con sus objetos ViewModel (vistas planas de las entidades de su dominio que se enviarán al cliente) y luego validar esos objetos antes de llegar a la aplicación/servidor de bases de datos.
Otro enfoque, uno que he visto usado muchas veces en diferentes aplicaciones, es simplemente generar una colección de mensajes de error de validación y enviar esa colección al cliente. Está bien, pero hay un problema. solo un simple mensaje de resumen de errores de validación no funcionará, especialmente si tiene un formulario de entrada de datos grande.
Ahora el marco de ASP.NET MVC hace la vida mucho más fácil. puede usar EF + DataAnnotations, y MVC Scaffolding Framework puede hacer la mayor parte del trabajo por usted. pero ese es el caso si quieres crear una aplicación MVC e implementar tu lógica de validación con jquery y script java.
Pero, ¿y si necesita un enfoque más genérico para implementar un marco de validación que pueda utilizarse y utilizarse en diferentes aplicaciones, digamos WinForms y WebForms?
Solo para aclarar, lo que busco es un conjunto de patrones de diseño/principios y/o técnicas/marcos para implementar un marco de validación que se pueda implementar con su modelo de dominio y luego aplicar en sus aplicaciones cliente. Y -> no quiero simplemente devolver una colección de mensajes de error de cadena sobre las reglas rotas o algo así, quiero poder actualizar mis controles de datos vinculados (TextBox, ComboBox, DateTimePicker, etc.) después de la falla de validación para que la capa de experiencia del usuario sería más intuitiva (si se quiere).
He visto algunas implementaciones y marcos aquí y allá, y he usado la validación del lado del cliente ASP.NET MVC desde hace un tiempo. entonces mi respuesta no tiene nada que ver con la validación de MVC o JavaScript.
P.S Si usted podría mencionar enlaces de referencia, libros, artículos, ejemplos de proyectos y/o incluir fragmentos de código que sería genial.
TNX, Armin [:
gracias por su respuesta y los enlaces.tienes razón, he estado pensando en esto y trabajando en algunas aplicaciones de muestra durante los últimos días y hoy me di cuenta de que tratar de automatizar todo el proceso de implementación de la validación del lado del cliente sería algo exagerado. La buena noticia es que el espacio de nombres de DataAnnotaciones se puede usar para implementar la lógica de validación en entidades de dominio o para ver objetos de modelo. eso resolverá la centralización de las reglas de validación. pero eventualmente tendremos que implementar la validación real en el cliente nosotros mismos, lo cual no es grandioso. – Nexus