Подтвердить что ты не робот

IObservable vs Plain Events или почему я должен использовать IObservable?

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

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

Мои вопросы:

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

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

  • Каковы основные преимущества шаблона Observable?

4b9b3361

Ответ 1

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

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