Me vino como anillo al dedo la parte de validaciones de Listas con Fluent, porque lo tengo que aplicar en un proyecto del laburo y no sabia como hacerlo.
Interesante. Y es un tema a profundizar mucho. Se pretende ver en el estado del arte actual cómo realizar validaciones, de la forma más simple y fácil posible. Lo mejor: aclarar conceptos y recopilar las distintas experiencias que puedan aportar este tema. En concreto, podemos plantear dos: 1. Validaciones de argumentos Podemos pensar en un "ArgumentHelper" que realice este tipo de validaciones. Se me ocurre los "Contracts" en su momento. No sé si existe otro tipo en este momento. 2. Validaciones de entidades de negocio. Por lo poco que sé, se puede plantear varios: Contracts Fluent Validation vs fluentassertions Enterprise Library Validation Otras... ¿? Depende también del contexto de aplicación: WinForms-WPF o WebApp-API, donde habrá que validar la introducción de datos del cliente con javascript, y validar en servidor. Ideas: valido mis "reglas de negocio" en las entidades cuando se puede, y sino en mis servicios de dominio (casos más complejos). me pronuncio más a que las válids devuelvan bool y no q usen throw cómo manejo del flujo del codigo Yo las validaciones, y creo que es un termino muy amplio, las hago mediante el uso de specifications. Siempre que tengo que verificar una regla de negocio implemento las specifications necesarias. "pasas specifications a los repositorios y en base a ellas se arman dinamicamente los criterias para armar queries". Las validaciones se refieren a niveld e negocio: "las reglas de negocio se expresan en el lenguaje del dominio." "En mi opinion, siempre es validacion de argumentos (mas complejos o menos complejos), nunca de entidades. Explico porqué. Que es lo que validas? una determinada intención del usuario en alguna UI, seguramente. Yo creo que conviene reificar esa acción e incorporar validacion a la acción. Puede hacerse facilmente en el enfoque MVVM, sobre los view models. Por ejemplo, en una pantalla de cambio de direccion de un cliente: Podemos tomar los datos, setearlos en la entidad cliente y luego validar la entidad completa o, mucho mejor, tomar los datos en un objeto CambioDeDireccionDeCliente y validadar si esos datos son correctos para luego hacer el cambio. Si los datos fuesen correctos, entonces no habria problemas en aplicarlos a la entidad sin mas miramientos. En este contexto es que me parece que siempre se trata de validar argumentos (una direccion postal, en este caso). Luego, podrias aplicar el framework que fuese necesario para validar este objeto, desde los atributos de .NET hasta un metodo especial o frameworks de terceros. Te parece razonable?" ---------------------------------- Carlos Peix fluentassertions.com/ Fluent Assertions is a set of .NET extension methods that allow you to more naturally specify the expected outcome of a TDD or BDD-style unit test. CodeGuard github.com/3komma14/Guard Yendo un paso más, si consideramos las validaciones de entidades de negocio como "Rules" (Reglas de negocio) ya un paso más es considerar en ciertas situaciones (con mucho más complejidad sin duda) una "state machine" y más allá un Workflow simple. rulesengine.codeplex.com/ workflowengine.codeplex.com/ En definitiva, una variedad enorme a elegir. Hasta ahora, por simplicidad FluentValidation me va gustando, todo dicho desde desconocimiento.
you probably dont care but if you're stoned like me during the covid times then you can watch all the latest series on instaflixxer. I've been binge watching with my girlfriend lately =)
Me vino como anillo al dedo la parte de validaciones de Listas con Fluent, porque lo tengo que aplicar en un proyecto del laburo y no sabia como hacerlo.
Excelente he aprendió mucho con tus videos no dejes de hacerlos gracias por compartir tus conocimientos
Muy buena librería y excelente explicación
Excelente video.
Muy bueno, gracias. !!!!!!!
Muy buen video! habla sobre parones de diseño con C#
Excelente video! Nuevo suscriptor ;)
Ya estará listo el video más profundo? Me gustó mucho la librería.
Excelente librería, y muy buena explicación. Será posible que pudieras poner un ejemplo usando Blazor ?. Saludos.
Interesante. Y es un tema a profundizar mucho.
Se pretende ver en el estado del arte actual cómo realizar validaciones, de la forma más simple y fácil posible.
Lo mejor: aclarar conceptos y recopilar las distintas experiencias que puedan aportar este tema.
En concreto, podemos plantear dos:
1. Validaciones de argumentos
Podemos pensar en un "ArgumentHelper" que realice este tipo de validaciones.
Se me ocurre los "Contracts" en su momento. No sé si existe otro tipo en este momento.
2. Validaciones de entidades de negocio.
Por lo poco que sé, se puede plantear varios:
Contracts
Fluent Validation vs fluentassertions
Enterprise Library Validation
Otras... ¿?
Depende también del contexto de aplicación: WinForms-WPF o WebApp-API, donde habrá que validar la introducción de datos del cliente con javascript, y validar en servidor.
Ideas:
valido mis "reglas de negocio" en las entidades cuando se puede, y sino en mis servicios de dominio (casos más complejos).
me pronuncio más a que las válids devuelvan bool y no q usen throw cómo manejo del flujo del codigo
Yo las validaciones, y creo que es un termino muy amplio, las hago mediante el uso de specifications.
Siempre que tengo que verificar una regla de negocio implemento las specifications necesarias.
"pasas specifications a los repositorios y en base a ellas se arman dinamicamente los criterias para armar queries".
Las validaciones se refieren a niveld e negocio: "las reglas de negocio se expresan en el lenguaje del dominio."
"En mi opinion, siempre es validacion de argumentos (mas complejos o menos complejos), nunca de entidades. Explico porqué.
Que es lo que validas? una determinada intención del usuario en alguna UI, seguramente. Yo creo que conviene reificar esa acción e incorporar validacion a la acción. Puede hacerse facilmente en el enfoque MVVM, sobre los view models.
Por ejemplo, en una pantalla de cambio de direccion de un cliente: Podemos tomar los datos, setearlos en la entidad cliente y luego validar la entidad completa o, mucho mejor, tomar los datos en un objeto CambioDeDireccionDeCliente y validadar si esos datos son correctos para luego hacer el cambio.
Si los datos fuesen correctos, entonces no habria problemas en aplicarlos a la entidad sin mas miramientos.
En este contexto es que me parece que siempre se trata de validar argumentos (una direccion postal, en este caso).
Luego, podrias aplicar el framework que fuese necesario para validar este objeto, desde los atributos de .NET hasta un metodo especial o frameworks de terceros.
Te parece razonable?"
----------------------------------
Carlos Peix
fluentassertions.com/
Fluent Assertions is a set of .NET extension methods that allow you to more naturally specify the expected outcome of a TDD or BDD-style unit test.
CodeGuard
github.com/3komma14/Guard
Yendo un paso más, si consideramos las validaciones de entidades de negocio como "Rules" (Reglas de negocio) ya un paso más es considerar en ciertas situaciones (con mucho más complejidad sin duda) una "state machine" y más allá un Workflow simple.
rulesengine.codeplex.com/
workflowengine.codeplex.com/
En definitiva, una variedad enorme a elegir.
Hasta ahora, por simplicidad FluentValidation me va gustando, todo dicho desde desconocimiento.
Muy interesante!
Me encanto! Me gustaría ver la parte de los mensajes en otro idioma. Saludos
Que beneficios traería sobre las validaciones hechas con FluentAPI de EntityFramework o las DataAnnotattions?
Muy buen video ;-)
Muy interesante el video !!
Un pedido para NSubstitute.
Saludos
you probably dont care but if you're stoned like me during the covid times then you can watch all the latest series on instaflixxer. I've been binge watching with my girlfriend lately =)
@Connor Will Yup, I've been using instaflixxer for months myself :D
hay manera de ordenar o configurar el orden de como deben aparecer en el UI desde fluent?
Cual es la diferencia entre Fluent Validation y Fluent Validation Dependency injection ? cual es la correcta ?
⭐⭐⭐⭐⭐
Esto es solo una traducción...
porque lo dices