2010-07-06 4 views
38

Microsoft представила IObservable<T> interface BCL с .NET Framework 4, и я подумал: «Отлично, наконец, я должен использовать это!» Поэтому я глубоко вырыл и прочитал сообщения и документацию и даже реализовал шаблон.IObservable vs Plain Events или почему я должен использовать IObservable?

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

Мои вопросы:

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

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

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

ответ

27

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

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

+1

привет спасибо за ваш ответ, могли бы вы подробнее рассказать о "благоприятной„LINQ для событий.“Таким образом, вы можете легко создавать„потоки событий“или привести пример? Adiel. –

+2

код [вики страница Rx] (http://rxwiki.wikidot.com/101samples#toc15) имеет несколько типов событий LINQ to Events. Также есть знаменитая «перетаскивание» [видео] (http://channel9.msdn.com/posts/J .Van.Gogh/Writing-your-first-Rx-Application /). –

+0

+0 Готов поспорить, у вас есть много проницательности для № 2, которую вы не поставили: P –

Смежные вопросы