Архитектура приложения на Event Sourcing
Оставьте модель предметной области в приложении, а Chronacta используйте как инфраструктуру хранения событий.
Обработчик команды, агрегат и репозиторий
Обработчик команды координирует операцию. Репозиторий загружает агрегат из потока событий. Агрегат применяет правила предметной области и формирует события, которые репозиторий добавляет с ожидаемой версией.
За инварианты отвечает агрегат. Ни координация в обработчике команды, ни хранилище событий не заменяют эту ответственность.
Модели команд и запросов
В CQRS модель записи обеспечивает выполнение поведения предметной области. Модели чтения обслуживают запросы и могут иметь другую структуру или использовать другое хранилище.
Проекция преобразует события в модель чтения. Обработчик запроса читает эту модель. Компоненты могут работать в одном процессе или отдельно.
Ответственность Chronacta
Chronacta хранит потоки событий, проверяет ожидаемые версии, предоставляет чтение и доставляет события через подписки. Сервер также предоставляет встроенные возможности проекций.
Проекции на стороне приложения могут строить модели чтения в других базах данных. Отличайте таких потребителей от проекций, которые исполняет сам сервер Chronacta.
Ограниченные контексты и интеграция
Ограниченный контекст задаёт область действия модели предметной области и её языка. Он не равнозначен потоку событий или экземпляру сервера.
Определяйте контракты при передаче событий между контекстами. Координируйте многошаговые процессы в приложении, а не рассматривайте хранилище событий как менеджер процессов.
Практическое упражнение
Нарисуйте обработчик команды, агрегат, репозиторий, Chronacta, проекцию и обработчик запроса. Определите владельцев контрактов и места обработки сбоев.
Путь обучения Event Sourcing · Назад · Далее · Документация Chronacta
