Please enable JavaScript.
Coggle requires JavaScript to display documents.
Разработка бизнес-логики с порождением событий - Coggle Diagram
Разработка бизнес-логики с порождением событий
Шаблон "Порождение событий"
Сохраняет агрегат в виде последовательности доменных событий, которые представляют изменение состояния.
Недостатки традиционного подхода сохранения данных:
Объектно-реляционный разрыв
Отсутствие истории агрегатов
Реализация журналирования для аудита требует много усилий и чревата ошибками.
Публикация событий является лишь дополнением к бизнес-логике
Доменными называют события, которые публикуются при изменении состояния агрегата.
Порождение событий — это событийный подход к реализации бизнес-логики и сохранению агрегатов. Агрегат хранится в базе данных в виде цепочки событий. Каждое событие представляет изменение его состояния.
Порождение событий
Агрегат создается с помощью следующих шагов.
Создание экземпляра корня агрегата с помощью его конструктора по умолчанию.
Вызов process() для генерации новых событий.
Обновление агрегата путем перебора новых событий и вызова его метода apply ().
Сохранение новых событий в хранилище событий.
Загрузка агрегата состоит из следующих шагов:
Загрузка событий агрегата.
Создание экземпляра агрегата с помощью конструктора по умолчанию.
Перебор событий с вызовом apply().
Обновление агрегата состоит из таких этапов.
Загрузка событий агрегата из хранилища событий.
Создание экземпляра корня агрегата с помощью его конструктора по умолчанию.
Перебор загруженных событий и вызов apply () из корня агрегата.
Вызов его метода process() для генерации новых событий.
Обновление агрегата путем перебора новых событий и вызова apply ().
Сохранение новых событий в хранилище событий.
Приложение, основанное на порождении событий, имеет трехуровневую структуру:
□ Состоит из одного или нескольких агрегатов.
□ Определяет события, генерируемые каждым агрегатом.
□ Определяет структуру событий.
Публикация событий с помощью опрашивания
(опрашивание таблицы БД)
Публикация событий с помощью отслеживания транзакционного журнала
Преимущества порождения событий
□ надежную публикацию доменных событий;
□ сохранение истории изменений агрегата;
□ отсутствие большинства проблем, связанных с объектно-реляционным раз рывом;
□ машину времени для разработчиков.
Недостатки порождения событий
□ Оно имеет другую модель программирования с высоким порогом вхождения.
□ Оно так же сложно, как приложение, основанное на обмене сообщениями.
□ Меняющиеся события могут создать проблемы.
□ Усложняется удаление данных.
□ Обращение к хранилищу событий связано с определенными трудностями.
Хранилище событий — это гибрид базы данных и брокера сообщений.