INotifyPropertyChanged vs IObservable - RxExtensions,其中一个用于观察者模式

agg*_*gie 6 architecture data-binding system.reactive observer-pattern

在这里对业务层核心进行大规模重新分解,我需要一些帮助来选择/实现更好的设计模式和实现.

题:

  1. 在ASP MVC,业务层上下文中,IObservable何时支配INotifyPropertyChanged
  2. 哪一个是genericObserableFactoryObject的设计模式的更好实现
  3. 我非常喜欢weakEventListener,因为内存泄漏问题较低,http://msdn.microsoft.com/en-us/library/hh199438.aspx,这是否仅适用于线程和线程调度

我的尽职调查:我理解INPC属于属性级别,另一个是更多的概念对象级别,但使用LINQ似乎IObservable可能是选择.但是,嵌入任何对象内部的简单性和灵活性很诱人.

因此,我只需要帮助理解两者的设计意图/目的/动机,哪一个是观察者模式工厂的最佳重用.

另外,知道任何地方,我可以获得观察员工厂的代码片段

Lee*_*ell 5

据我所知,INPC 的主要用途是客户端视图数据绑定(即 WPF、Silverlight)。您绝对可以在不用于视图绑定的应用程序中使用 INPC,但string这里发生了一件笨拙的事情(PropetyName)。使用它的好处是整个对象只需要一个事件,并且在事件中指定属性名称(或者整个对象的空字符串应被视为已更改)。或者,您可以XXXPropertyChanged为每个事件举办一个活动

IObservable<T>只是观察者模式的替代实现(即 .NET 事件的替代)。您不需要公开类中的事件,而是公开一个IObservable<T>. 您只需对OnNext可观察序列进行赋值,而不是引发事件。IObservable<T>还具有通过OnError或进行序列终止的概念的额外好处OnCompleted。因此,在这种情况下,更好的问题是我应该使用事件还是IObservable<T>. 为了回答这个问题,我建议优先考虑,IObservable<T>除非目标受众/消费者不想关心学习 Rx。

这是两者之间相当幼稚的区别,但是我在这里更多地扩展了这个概念http://introtorx.com/Content/v1.0.10621.0/01_WhyRx.html#WhyRx