Поскольку вы пометили свой вопрос как «CQRS», я думаю, вы имеете в виду события в контексте «CQRS & Event Sourcing», как описано здесь . В этом уроке различие между событиями и командами хорошо объяснено:
события фиксируют элементарные «вещи, которые могут произойти» в вашей системе, с точки зрения системы.
Команды определяются тем, что пользователь считает операцией, с его точки зрения.
И хотя это часто приводит к паре команд и событий с соответствием 1: 1, эти разные точки зрения могут привести к командам, которые запускают более одного события, или к различным событиям в зависимости от параметров команды. Я даже могу представить себе случаи, когда команда вообще не вызывает событие, но это будет очень исключительный случай, а не очень типичный.
Например, в учебнике упоминаются события
- TabOpened
- DrinksOrdered
- FoodOrdered
и команды
Здесь команда «OpenTab» приведет к событию «TabOpened», а команда PlaceOrder приведет к событиям «DrinksOrdered», «FoodOrdered» или обоим.
Фактически, если вы разрабатываете новую систему «с нуля», вы можете попытаться спроектировать ее с соотношением 1: 1 между командами и событиями и посмотреть, насколько хорошо она масштабируется, когда система становится больше. Вы даже можете попробовать гибридный подход: список событий и команд с соответствием 1: 1, вместе с некоторыми дополнительными, комбинированными командами. Просто попробуйте, как далеко это приведет вас к конкретной системе, которую вы разрабатываете.