Data binding INotifyPropertyChanged vs IObservable-RxExtensions,哪一个用于观察者模式

Data binding INotifyPropertyChanged vs IObservable-RxExtensions,哪一个用于观察者模式,data-binding,architecture,system.reactive,observer-pattern,Data Binding,Architecture,System.reactive,Observer Pattern,这里是业务层核心的大规模重分解,我需要一些帮助来选择/实现更好的设计模式和实现 问题: 在ASP MVC的业务层上下文中,IObservable何时主导INotifyPropertyChanged 对于genericObserableFactoryObject的设计模式,哪一种实现更好 我真的很喜欢weakEventListener,因为它在内存泄漏方面的问题较低,这是否只适用于线程和线程调度 我的尽职调查: 我知道INPC是属性级别的,而另一个更像是概念对象级别的,但对于LINQ,似乎可以选择

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

问题:

  • 在ASP MVC的业务层上下文中,IObservable何时主导INotifyPropertyChanged
  • 对于genericObserableFactoryObject的设计模式,哪一种实现更好
  • 我真的很喜欢weakEventListener,因为它在内存泄漏方面的问题较低,这是否只适用于线程和线程调度
  • 我的尽职调查: 我知道INPC是属性级别的,而另一个更像是概念对象级别的,但对于LINQ,似乎可以选择IObservable。然而,嵌入任何对象的简单性和灵活性是诱人的

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


    另外,我知道任何地方,我都可以得到observer工厂的代码片段,MSDN说得非常清楚

    IObservable

    IObserver
    IObservable
    接口为基于推送的通知提供了通用机制,也称为观察者设计模式

    INotifyPropertyChanged

    INotifyPropertyChanged
    接口用于通知客户端(通常是绑定客户端)属性值已更改

    据我所知,
    INotifyPropertyChanged
    是在很久以前添加的(例如,它已经在WS-Client中使用过,后来因为它是WPF绑定处理中最重要的接口而被使用)


    所以我假设答案是模糊而清晰的:如果您确实需要观察者模式,请使用
    IObservable

    据我所知,INPC的主要用途是客户端视图数据绑定(即WPF、Silverlight)。你当然可以在不用于视图绑定的应用程序中使用INPC,但这里有一个笨重的
    字符串
    东西(propertyName)。使用它的好处是,整个对象只需要一个事件,并且在事件中指定了属性名称(或者整个对象的空字符串应该被视为已更改)。或者,您可以为每个事件设置一个
    XXXPropertyChanged
    事件

    IObservable
    只是观察者模式的替代实现(即.NET事件的替代)。不公开类中的事件,而是公开一个
    IObservable
    。您只需将
    OnNext
    值添加到可观察序列,而不是引发事件
    IObservable
    还具有通过
    OnError
    OnCompleted
    终止序列的额外好处。所以在这种情况下,一个更好的问题是我应该使用Events还是
    IObservable
    。为了回答这个问题,我建议倾向于
    IObservable
    ,除非目标受众/消费者不想关心学习


    这是两者之间的一个相当幼稚的区别,但是我在这里进一步扩展了这个概念

    你所说的ObserableFactoryObject是什么意思,你想实现什么?知道这会更容易回答。