域事件v事件聚合器v ...其他

域事件v事件聚合器v ...其他

问题描述:

我在我的域中有一个复合结构,叶节点(Allocation)有一个DurationChanged事件,我想在我的表示层视图模型结构的顶部使用(在TimeSheetViewModel),我想知道什么是最好的方法去实现它。域事件v事件聚合器v ...其他

选项浮现在脑海中包括:

  1. 订阅它在TimeSheetComposite。每个组合最终由分配组成,TimeSheetComposite是TimeSheetViewModel的模型。看起来我还需要TimeSheetComposite中的一个事件,该事件在触发子DurationChanged事件时触发; TimeSheetViewModel将订阅后一个事件。
  2. 忽略DurationChanged事件,并在AllocationViewModel.Amount发生更改时,沿着INPC链起泡至TimeSheetViewModel。我没有一个有用的信息,特别是编辑前的旧金额,但如果需要,我可以足够便宜地计算出所需的最终结果。
  3. 使DurationChanged事件为Domain Event;我目前没有使用域名事件,但我确定喜欢这个概念,看起来Udi的文章中有足够的代码可以开始使用它。
  4. 设置某种事件聚合器发布&订阅DurationChanged。我不确定Domain Events和Event Aggregators之间的区别是什么,以及它们是否是解决相同问题的补充或替代方法。该implementation here using Rx looks promising

在此设计中,TimeSheetViewModel需要知道Allocation.Duration何时发生更改,因此它可以按日期获得所有分配持续时间的新总计。

你会如何提供DurationChanged通知?

干杯,
Berryl

域复合结构&事件

enter image description here

表示层结构

enter image description here

我卷绕侦听在吨叶事件他(时间片)复合,然后基本上重新抛出一个类似的事件,使(TimeSheet)ViewModel容易听取它。

当我更好地理解DomainEvents/EventAggregators时,我会重新访问这一个。

干杯,
Berryl