Obtengo el concepto general de CQRS, pero tengo algunas preguntas cuando se trata de ir más allá del código de ejemplo y las cubiertas de diapositivas que están disponibles para tratar problemas del mundo real.Validación y solución de errores en CQRS
Validación
Cuando tenga que hacer la validación de un comando que involucra valores de comprobación de la base de datos, ¿qué hacer? Tome la inscripción para un servicio, debo ingresar una dirección de correo electrónico única. Un argumento que he escuchado es que es muy poco probable que el usuario ingrese una dirección de correo electrónico duplicada, por lo que solo debe manejarlo al procesar el comando y enviarles un correo electrónico que diga "lo siento", o tal vez sugiriendo que restablezcan su contraseña. Por lo tanto, este proceso evita tener un modelo de lectura por el bien de la validación. Pero, ¿cómo manejas la caja duplicada en el controlador de comando? ¿cómo sabes que es un duplicado? verifica un modelo de lectura? bien podría haber usado eso en primer lugar para una mejor usabilidad.
Los cambios en la funcionalidad de los insectos/fijación
Qué pasa cuando se necesita cambiar la forma en que un comando funciona, o corregir un error? En la filosofía de solo agregar, ¿qué hago con todos los comandos y manejadores de comandos antiguos? No puedo cambiarles el nombre a _legacy y esconderlos; de lo contrario, mi deserialización de eventos no funcionará. ¿Qué soluciones elegantes hay para lidiar con esto?
Gracias