none
FluentValidationMVC5 y DDD RRS feed

  • Pregunta

  • Hola:

     Me encuentro participando en un proyecto con ASP MVC y DDD (o al menos eso pretendemos que sea la arquitectura)...

      Mi duda sobre DDD y ASP MVC es en las validaciones de las entidades, anteriormente en proyectos Desktop esto no era problema ya que dentro de la capa de Servicios de Dominio yo usaba FluentValidation para realizar las reglas de validación y despues generaba un CustomException para retornar un mensaje hasta la capa de presentación, en este caso por validaciones de entidades para WEB veo que se requiere ligar el controlador a la entidad Validator y aquí es donde nace mi duda, ¿Donde instalar FluetnValidationMVC? ya que me parece que no debería de ser en la capa de Servicios de Dominio sino en Presentación.

     Si alguien a trabajado con esta librería en aplicaciones ASP MVC me gustaría me compartiera sus experiencias.


    Saludos desde Monterrey, Nuevo León, México!!!

    martes, 9 de junio de 2015 16:26

Respuestas

  • hola

    el FluetnValidationMVC entiendo esta pensado para usarse desde la presentacion

    ahora podrias tambien definir reglas de dominio en el servicio, pero estas podrias notificarlas al controller por medio de una exception, pero esta serian otro juego de reglas ya que estan el una capa distinta

    es mas en la presentacion podrias usar simplemente DataAnnotation y las reglas fluente (o sea no mvc) la defines en tu negocio y las comunicas por exception al controller

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina


    martes, 9 de junio de 2015 16:48
  • >>el tema es que veo los DataAnotations hasta cierto punto limitados para realizar validaciones

    es que son limitados, porque se supone que validas la presentacion, requeridos, rango de datos, etc

    pero si usas una arquitectura de datos y no accedes a la db desde el controller entonces las reglas que planteas las debes definir en la capa de negocio ya que no es responsabilidad de la presentacion el acceso a la db

    por supuesto cuando digo presentacion apunto al patron mvc completo, las view y los controllers son parte de la presentacion

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    martes, 9 de junio de 2015 19:16
  • hola

    >>el Modelo en el patron MVC debera de sustituir a mi Capa de "Entidades de Dominio" o simplemente tengo que crear una  clase en Entidades de dominio y otra en el Modelo de la capa de presentacion

    en principio lo ideal seria que la entidad que defines en el model de mvc sea diferente a la entidad de dominio, y realizas una conversion de un tipo a otro

    igual esto no es obligatorio podrias usar la misma entidad de dominio como model de mvc

    pero al aplciar las reglas de validacion deberias generar dos juegos, unas que apliquen en la presentacion y otras que apliquen en el servicio

    basicamente las primeras seran validaciones basicas similares a las que implemente dataannotation, mientas qe las segundas reglas puede que necesiten acceder a la db para implementar la validacion

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    martes, 9 de junio de 2015 21:20

Todas las respuestas

  • hola

    el FluetnValidationMVC entiendo esta pensado para usarse desde la presentacion

    ahora podrias tambien definir reglas de dominio en el servicio, pero estas podrias notificarlas al controller por medio de una exception, pero esta serian otro juego de reglas ya que estan el una capa distinta

    es mas en la presentacion podrias usar simplemente DataAnnotation y las reglas fluente (o sea no mvc) la defines en tu negocio y las comunicas por exception al controller

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina


    martes, 9 de junio de 2015 16:48
  • Hola:

     Bien, el tema es que veo los DataAnotations hasta cierto punto limitados para realizar validaciones, por lo cual, usare entonces FluentValidation desde presentación en un proyecto separada del tipo librería de clases.}

     Dentro del patrón MVC entiendo que dentro del Modelo deberán de ir todas aquella clases (entidades) que representen al negocio, entonces tengo otra duda que pasa con la "capa" Entidades de Dominio", es mis desarrollos anteriores esta capa contenía todas las entidades que usaría presentación, pero aquí aun no me queda claro que entidades usar.

     Agradecería tus comentarios.


    Saludos desde Monterrey, Nuevo León, México!!!

    martes, 9 de junio de 2015 17:41
  • >>el tema es que veo los DataAnotations hasta cierto punto limitados para realizar validaciones

    es que son limitados, porque se supone que validas la presentacion, requeridos, rango de datos, etc

    pero si usas una arquitectura de datos y no accedes a la db desde el controller entonces las reglas que planteas las debes definir en la capa de negocio ya que no es responsabilidad de la presentacion el acceso a la db

    por supuesto cuando digo presentacion apunto al patron mvc completo, las view y los controllers son parte de la presentacion

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    martes, 9 de junio de 2015 19:16
  • Hola:

     Entiendo lo que me dices.

     En relacion a mi otra duda, el Modelo en el patron MVC debera de sustituir a mi Capa de "Entidades de Dominio" o simplemente tengo que crear una  clase en Entidades de dominio y otra en el Modelo de la capa de presentacion (aunque hacer esto ultimo me parece que me impacta en los mapeos de entidades) o ¿como es que se procede en esta caso ?


    Saludos desde Monterrey, Nuevo León, México!!!

    martes, 9 de junio de 2015 20:28
  • hola

    >>el Modelo en el patron MVC debera de sustituir a mi Capa de "Entidades de Dominio" o simplemente tengo que crear una  clase en Entidades de dominio y otra en el Modelo de la capa de presentacion

    en principio lo ideal seria que la entidad que defines en el model de mvc sea diferente a la entidad de dominio, y realizas una conversion de un tipo a otro

    igual esto no es obligatorio podrias usar la misma entidad de dominio como model de mvc

    pero al aplciar las reglas de validacion deberias generar dos juegos, unas que apliquen en la presentacion y otras que apliquen en el servicio

    basicamente las primeras seran validaciones basicas similares a las que implemente dataannotation, mientas qe las segundas reglas puede que necesiten acceder a la db para implementar la validacion

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    martes, 9 de junio de 2015 21:20