IObservable против простых событий или почему я должен использовать IObservable? - PullRequest
41 голосов
/ 06 июля 2010

Microsoft представила IObservable<T> интерфейс для BCL с .NET Framework 4, и я подумал: "Отлично, наконец-то, я должен его использовать!" Поэтому я копал глубоко, читал посты и документацию и даже реализовал шаблон.

После этого я понял, что базовая реализация фактически отправляет все события T всем своим подписчикам без какой-либо фильтрации; то есть прямая трансляция. Я где-то читал, что шаблон Observable предназначен для простого вещания. Я чувствую, что это неправда и что-то упускаю.

Мои вопросы:

  1. Если я добавлю механизм фильтрации, в чем разница между использованием шаблона Observable и простым использованием простых событий CLR?

  2. Когда следует использовать этот шаблон и когда следует использовать простые события CLR?

  3. Каковы основные преимущества модели Observable?

1 Ответ

29 голосов
/ 06 июля 2010

Наблюдаемый является краеугольным камнем Rx библиотеки . Они предоставляют практически все реализации и операторы, которые вам понадобятся. Идея IObservable<T> и Rx заключается не только в «обработке» событий, но и в «LINQ to Events». Таким образом, вы можете легко составлять «потоки событий», что дает вам большую мощность по сравнению с обычной обработкой событий.

Обратите внимание, что пример реализации MSDN IObservable<T> является неверным ; команда разработчиков была уведомлена.

...