Я начинаю с моей первой реальной установки CQRS.Я строю часть сайта, посвященную регистрации пользователей, домен и сторона записи мне очень знакомы, исходя из стандартного «стиля» DDD.Для модели чтения у меня есть денормализатор, который обрабатывает AccountCreatedEvent.
На данный момент - для функции, которую я реализую, меня интересует только регистрация пользователей.Это включает проверку уникальности адреса электронной почты / имени пользователя.
Итак, скажем, я разработал модель чтения специально для этой цели.AccountRegistrationReadModel, которая содержит только те части данных, которые меня интересуют прямо сейчас: имя пользователя, электронная почта, HashedPassword
Позже, когда я начну создавать страницу профиля пользователя, мне понадобитсяAccountProfileReadModel.
Эта модель чтения будет иметь некоторые из тех же свойств и будет иметь другой денормализатор, который обрабатывает события, связанные с изменением данных профиля, возможно, например, AccountUsernameChangedEvent
На этом этапе AccountRegistrationReadModel и AccountProfileReadModelзаинтересованы в прослушивании сообщений AccountUsernameChangedEvent.
Мой вопрос: правильный ли это подход?Должен ли я хранить модель чтения для каждой функции?Или я должен попытаться нормализовать его и повторно использовать данные, по возможности ограничить дублирование?