patterns pattern microsoft csqr domain-driven-design cqrs

domain driven design - pattern - Pantallas CQRS y CRUD



materialized view pattern (3)

CustomerHasMoved es el evento que se activa después de haber actualizado la ubicación de los clientes. Este evento actualiza las bases de datos de lectura / bases de datos de caché. El comando de la interfaz gráfica de usuario debe ser MoveCustomer o algo así. Creo que pondría la actualización del nombre del cliente en un comando como UpdateCustomer.

Uno de los principios básicos de CQRS, según entiendo, es que los comandos deben estar centrados en el comportamiento y tener un valor en el negocio o el UL, y no en los datos, es decir, CRUD. En lugar de enfocarnos en actualizar un cliente, tenemos comandos como CustomerHasMoved. Qué sucede si tiene pantallas CRUD que están allí para corregir ciertos datos. Por ejemplo, necesitamos cambiar el nombre de un cliente que está mal escrito. Esto realmente no tiene mucho valor en el negocio. ¿Debería estar esto bajo el paraguas de un comando UpdateCustomer?


En realidad, podría haber varias razones para actualizar el nombre de un cliente. Como decías, podría estar mal escrito o ... podrías casarte y cambiar tu nombre por el de tu marido.

Si solo tuviera un comando UpdateCustomer, perdería la intención original y no podría tener diferentes comportamientos para cada uno de ellos. Si el nombre estaba mal escrito, podría ser tan simple como actualizar la base de datos, mientras que si su cliente se casó, es posible que deba notificar al departamento de mercadotecnia para que puedan ofrecer un descuento.

En el caso de que su entidad sea puramente CRUD, es decir, no hay ninguna intención que pueda asociarse con la modificación de las propiedades, entonces está bien tener un UpdateEntityCommand. A continuación, puede pasar lentamente a algo más basado en tareas


Solo quiero poner un comentario sobre esto rápidamente ya que apareció.

Es importante tener en cuenta que algunos objetos son realmente CRUD y eso es correcto. Es posible que no me importe por qué cambia un nombre en mi dominio donde envío productos a personas y solo necesito esos datos para imprimir etiquetas de correo. El truco está en hacer que el comportamiento sea el predeterminado y, a continuación, volver a una interfaz CRUD una vez que esté seguro de que realmente no le importan las razones, sino viceversa.

Greg