CQRS включил меня в режим мышления. Я пытаюсь запустить новый проект с идеями CQRS. Главное, что мне нравится, -
1) разделение запроса и команды. Проблемы с доменом были проблемой.
2) Использование хранилища событий для аудита - я не буду использовать его для воспроизведения - по крайней мере, не сейчас.События CQRS и домена
Я хорошо с стороне запроса, и я все еще есть некоторые вопросы по доменным События
Если команда приводит Updation из нескольких агрегатных Roots (Исх. Заказ и OrderDetail) Я буду иметь их область видимости под UnitOfWork (транзакционный). Теперь каждый домен отвечает за публикацию событий, когда происходит изменение его состояния.
скажем, команда изменяет 3 записи заказаDetail. Каждый OrderDetail опубликует 2 события. В итоге у нас есть 6 событий.
a) Если я публикую события, как только я внесли изменения в объект домена (но не совершил транзакцию), как мне отменить события, которые были опубликованы (и, возможно, были использованы абонентами)
- Что я могу придумать, так это держать события, которые будут опубликованы в списке «под одной областью работы», и после того, как был вызван коммит по транзакции, сохраните его и опубликуйте. Звучит ли это что-то одно.
б) Если изменения в OrderDetail требует, чтобы некоторые изменения также имеют место в Приказе Совокупный Root затем
I) Если я основываю эти изменения путем обработки событий, опубликованных OrderDetail Совокупности? Напр. скажем, две детали заказа были удалены. Это делает статус заказа от «предпочтительного» до «Не предпочтительным». ii) Что делать, если ошибки события и не обновляют состояние заказа. Если заказ остается предпочтительным, он отправляется через 2 дня.
Добавление другого вопроса
с) «событием домена является источником всех изменений состояния приложения» или они «Результат всех изменений состояния приложения»
Спасибо заранее,
The Mar
Я бы посоветовал отправить такие вопросы в Google Group по DDD/CQRS. Там больше практикующих. –