Question

L'un des principes de base de CQRS, si je comprends bien, est que les commandes doivent être centrées sur le comportement, et ont une valeur dans l'entreprise ou l'UL, et non centrée sur les données, par exemple., CRUD. Au lieu de se concentrer sur la mise à jour d'un client, nous avons des commandes comme CustomerHasMoved. Que faire si vous avez des écrans CRUD qui sont là pour corriger certaines données. Par exemple, nous avons besoin de changer le nom d'un client qui est mal orthographié. Cela n'a pas vraiment beaucoup de valeur dans l'entreprise. Si cela est juste sous l'égide d'une commande UpdateCustomer?

Était-ce utile?

La solution

En fait, il pourrait y avoir plusieurs raisons pour mettre à jour le nom d'un client. Comme vous le disiez, il pourrait être mal orthographié ou ... vous pouvez vous marier et changer votre nom à votre mari.

Si vous aviez seulement une commande UpdateCustomer, vous perdre en mesure d'avoir l'intention initiale et vous ne seriez pas des comportements différents pour chacun d'eux. Si le nom a été misselled il pourrait être aussi simple que la mise à jour de la base de données, alors que si votre client vous est marié pourriez avoir besoin d'informer le département de marketing afin tthat qu'ils peuvent offrir un rabais.

Dans le cas où votre entité est purement CRUD, qui est il n'y a pas l'intention que vous pouvez associer à modifier les propriétés, il est normal d'avoir un UpdateEntityCommand. Vous pouvez ensuite passer lentement à quelque chose de plus tâche en fonction

Autres conseils

Je veux juste mettre un commentaire sur cette rapidement qu'elle surgit.

Il est important de noter que certains objets sont en fait CRUD et c'est ok. Je ne peux pas prendre soin vraiment pourquoi un nom est en train de changer dans mon domaine où j'expédier des produits aux personnes et seulement besoin que les données à imprimer des étiquettes d'expédition. L'astuce consiste à faire le comportement par défaut et ENSUITE revenir à une interface CRUD une fois que vous êtes sûr que vous vraiment ne se soucient pas des raisons, par opposition au vice-versa.

Greg

CustomerHasMoved est l'événement qui est déclenché après avoir mis à jour l'emplacement des clients. Cet événement met à jour les bases de données de lecture / bases de données de cache. La commande de l'interface doit être MoveCustomer ou quelque chose comme ça. Je pense que je mettrais la mise à jour du nom du client dans une commande comme UpdateCustomer.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top