我一直在寻找Composite Application Library,这很棒,但是我在决定何时使用EventAggregator ...或更确切地说-什么时候不使用它时遇到了麻烦。
看一下StockTraderRI的例子,我更加困惑。他们在某些情况下使用EventAggregator,在其他情况下使用“经典”事件(例如,在IAccountPositionService接口(interface)中)。
我已经决定将其用于繁重的工作任务,该任务应在后台线程上运行。在这种情况下,EventAggregator提供了后台的线程编码,因此我不必为此担心。除此之外,我喜欢这种方法提供的去耦。
所以我的问题是:当我开始在应用程序中使用EventAggregator时,为什么不对所有自定义事件使用EventAggregator?
最佳答案
这是一个很好的问题。在Composite WPF(Prism)中,有3种可能的方法可以在应用程序的各个部分之间进行通信。一种方法是使用命令,该命令仅用于将UI触发的 Action 传递给实现该 Action 的实际代码。另一种方法是使用共享服务,其中多个部分持有对同一服务(Singleton)的引用,并且它们以经典方式处理该服务上的各种事件。如前所述,对于断开和异步通信,最好的方法是使用Event Aggregator(与Martin Fowler的模式非常相似)。
现在,何时不使用它:
我希望这回答了你的问题。