Pregunta

Uno de los principios básicos de CQRS, como yo lo entiendo, es que los comandos deben ser un comportamiento centrado en, y tienen un valor en el negocio o la UL, y no centrada en los datos, es decir., ABM. En lugar de centrarse en la actualización de un cliente, tenemos órdenes como CustomerHasMoved. ¿Qué pasa si usted tiene pantallas CRUD que están ahí para corregir ciertos datos. Por ejemplo, tenemos que cambiar el nombre de un cliente que está mal escrito. Esto en realidad no tiene mucho valor en el negocio. Si esto acaba de estar bajo el paraguas de un comando updateCustomer?

¿Fue útil?

Solución

En realidad, podría haber varias razones para actualizar el nombre de un cliente. Como usted decía, podría ser mal escrito o ... que podría casarse y cambiar su nombre a su marido.

Si tuviera solamente un comando updateCustomer, ya que se perdería la intención original y que no sería capaz de tener comportamientos diferentes para cada uno de ellos. Si el nombre se misselled podría ser tan simple como la actualización de la base de datos, mientras que si su cliente se caso puede que tenga que notificar al departamento de marketing para tthat que pueden ofrecer un descuento.

En el caso de que su entidad es puramente un mantenimiento, es decir que no hay intención de que se puede asociar con la modificación de las propiedades, entonces está bien tener un UpdateEntityCommand. A continuación, puede transición a algo más lentamente tarea basada

Otros consejos

Sólo quiero poner un comentario en este rápido como apareció.

Es importante tener en cuenta que algunos objetos son en realidad CRUD y eso es aceptable. Puede que no me importa qué nombre está cambiando en mi dominio donde Envío productos a personas y sólo necesito que los datos a imprimir etiquetas de correo. El truco está en hacer el comportamiento por defecto y después volviendo a una interfaz CRUD una vez que esté seguro de que realmente no se preocupan por las razones en lugar de al revés.

Greg

CustomerHasMoved es el evento que se dispara después de haber actualizado la ubicación del cliente. Este evento se actualizan las bases de datos de lectura / bases de datos de la caché. El comando de la interfaz gráfica de usuario debe ser MoveCustomer o algo por el estilo. Creo que me gustaría poner la actualización del nombre del cliente en un comando como updateCustomer.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top