Смесительная структура сценария транзакции с DDD / CQRS
-
27-09-2019 - |
Вопрос
Вот ситуация, чтобы поддержать нашу устаревшую систему, нам нужно вставить в таблицу всякий раз, когда пользователь входит в систему. Это в основном операция CRUD, поэтому на самом деле не имеет смысла создавать репозиторий / Entity / Command / событие Для этого, поскольку это вообще не связано с любыми бизнес-правилами. Единственная выгода для создания команды CQRS состоит в том, что эта база данных пишеток может случиться асинхронно под этой моделью. Который является лучшим маршрутом, чтобы взять?
- Используйте CQRS, а затем вызовите хранимые программы. При обращении с этой командой?
- Просто вызовите базу данных прямо в контроллере (я использую ASP.NET MVC)
Решение
Если вы используете (и упорные) события для возможного воспроизведения, то имеет смысл сделать запись на устаревших дБ в рамках обработчика событий (подумайте «шлюз»). Если вам нужно воспроизвести это событие в будущем, вы можете поменять поменять поддельный обработчик, который не переносит запись.
Ваш контроллер должен действительно быть только слоем перевода между и HTTP-запросом и командой для вашего домена. Письмо до БД (даже наследие, не доменный доступ) не имеет смысла там, ИМХО. Установка логики в обработчик событий делает взаимодействие очень явно.