Изначально мы использовали события Домена для обработки связи с внешними системами. Например, каждый раз, когда пользователь обновлял свой номер телефона ИЛИ свое имя, мы вызываем событие PhoneNumberUpdated И NameUpdated. Затем они обрабатываются обработчиками и отправляются в другие системы.
public void SetName(Name name)
{
if (Name == name) return;
(...)
RaiseEvent(new NameUpdated(Id, name));
}
public void SetPhoneNumber(PhoneNumber number, PhoneNumberType type)
{
RaiseEvent(new PhoneNumberUpdated());
}
Это прекрасно работает, если нам не нужно «агрегировать» события. Например, мы получили новое требование, чтобы мы отправляли одно электронное письмо, когда пользователь обновляет свое имя и / или номер телефона. С текущей структурой наши обработчики будут уведомлены несколько раз (один раз для каждого вызванного события), и это приведет к отправке нескольких электронных писем.
Делать наши мероприятия более общими, не кажется хорошим решением. Но тогда как бы мы агрегировали несколько событий, возникших в одной транзакции?
Thx
Себ