В чем разница между управляемым событиями и источником событий?

13

Я изучаю предметно-ориентированное проектирование (DDD) и натолкнулся на термины: Event Driven и Event Sourcing. Я знаю, что это публикация события от производителя к потребителю и хранение журнала, поэтому мой вопрос:

В чем разница между управляемым событиями и источником событий?

Джей Джей Бим
источник

Ответы:

16

Термин « управляемая событиями архитектура» используется для любой программной системы, основанной на компонентах, взаимодействующих в основном или исключительно посредством событий. Например, практически в любой крупной инфраструктуре GUI на любой популярной платформе используется механика, управляемая событиями. Термин «событие» обычно означает «уведомление» в этом контексте.

Источник событий - это гораздо более специальный термин, относящийся к системам, в которых все состояние приложения хранится в виде последовательности событий. Хорошо известным популярным классом примеров являются системы транзакционных баз данных, которые хранят любые изменения состояния в журнале транзакций. Здесь термин «событие» больше относится к «изменению состояния», а не только к «уведомлению».

Таким образом, любая система, которая использует «источник событий» в качестве своей основной механики, может рассматриваться также как система с равномерным управлением, но в целом все наоборот.

Док Браун
источник
Проголосовал твой ответ. Я сам сейчас ищу это и первым делом наткнулся на ваш ответ. Глядя на фразу «все состояние приложения хранится как последовательность событий», похоже, что вы говорите следующее: «Состояние приложения не сохраняется непосредственно в его текущей форме. Вместо этого выполняется каждая операция создания, обновления или удаления». на объекте или модели считается «событием», и именно эти «события» сохраняются непосредственно. Поэтому, чтобы получить текущее состояние объекта, вам необходимо воспроизвести эти события, чтобы восстановить его копию ». Это звучит правильно?
Panzercrisis
1
@Panzercrisis: я должен был написать «Event Sourcing сохраняет все изменения состояния приложения в виде последовательности событий». (как Фаулер). Все объекты обычно имеют «текущее» состояние, это состояние также может сохраняться (может быть отложено), как и сама последовательность событий. Я рекомендую прочитать статью Фаулера для полного объяснения.
Док Браун