Новые / Чтение флагов в CQRS - PullRequest
0 голосов
/ 07 декабря 2011

В настоящее время я разрабатываю концепцию для (в основном) пакета для совместной работы на основе HTML, который планирую реализовать с использованием CQRS.Это программное обеспечение будет содержать сообщения, которые могут быть отправлены пользователю (которые могут быть прочитаны или непрочитаны, очевидно) и другие элементы, которые должны быть помечены как «новые», если они были созданы после последнего входа пользователя.Вряд ли что-то новое, но я не совсем уверен, как это будет правильно реализовано с использованием CQRS.Насколько я понимаю, любое изменение должно быть без исключения возможно только через Команды.Но создание команд для каждого (нового) элемента, к которому осуществляется доступ, кажется слишком сложным, не говоря уже об издержках.Я не знаю, нужно ли мне это, но как лучше всего реализовать метку времени последнего доступа для элементов.По сути, та же проблема, что и выше, с той разницей, что изменение происходит КАЖДЫЙ раз, когда к элементу обращаются, а не только в первый раз для каждого пользователя.

CQRS - это потрясающая концепция, но она действительно требует большего изученияматериал.Не могу дождаться выхода книги:)

С уважением

[Редактировать] Никто?Не подумал бы, что это такой сложный вопрос ..

1 Ответ

0 голосов
/ 16 декабря 2011

Я предполагаю, что вы используете источник событий, и в этом случае, если вы разрешите службе запросов / обработчикам событий вызывать соответствующие события, это будет довольно легко решить.

Для ваших сообщений / элементов;при обработке определенных событий создания ваших элементов либо добавьте к существующим, либо создайте дополнительные обработчики событий, чтобы сохранить в сообщения модель чтения со статусом new и соответствующую информацию об элементе.

Как часть вашего входа в систему пользователя, я не понимаю, почему вы не можете вызвать событие входа в систему пользователя (из службы безопасности / запроса в зависимости от того, какваша реализующая аутентификация), чтобы сказать, что пользователь вошел в систему. Обработчик событий может перехватить это и записать отметку времени последнего входа в систему для определенной модели чтения последнего входа пользователя.

Кроме того, пользователь зарегистрировался-в обработчике событий потребуется обновить все новые сообщения (для этого пользователя) до непрочитанного состояния.Видя, как мы меняем статус сообщений при входе пользователя в систему, вам все еще нужно сохранять метку времени последнего входа в систему?

Для вашей метки времени последнего доступа, возможно, вы могли бы просто включить ее в свой запросСлужба как запросы для ваших различных элементов завершена.Вызовите событие, завершенное запросом, с идентификатором элемента / информацией о типе.

...