2010-07-06 21 views
38

Microsoft introdujo el IObservable<T> interface en el BCL con .NET Framework 4, y pensé: "¡Genial, finalmente, debo usarlo!" Así que profundicé y leí publicaciones y documentación e incluso implementé el patrón.IObservable vs eventos simples o ¿Por qué debería usar IObservable?

Después de hacerlo me di cuenta de que la implementación básica en realidad envía todos los eventos T a todos sus suscriptores sin ningún tipo de filtrado; es decir, difusión simple. Leí en alguna parte que el patrón Observable está destinado a transmisión simple. Siento que esto no es verdad y que me falta algo.

Mis preguntas:

  1. Si añado un mecanismo de filtrado, ¿cuál es la diferencia entre usar el patrón observable y simplemente usando eventos CLR vacíos?

  2. ¿Cuándo se debe utilizar este patrón y cuándo se deben elegir los eventos CLR simples?

  3. ¿Cuáles son las principales ventajas del patrón Observable?

Respuesta

27

Observable es la piedra angular del Rx library. Proporcionan casi todas las implementaciones y operadores que necesitará. La idea detrás de IObservable<T> y Rx no es solo el "manejo" de eventos, sino también la activación de "LINQ a eventos". Por lo tanto, puede componer fácilmente "secuencias de eventos", lo que le proporciona mucha potencia en comparación con el manejo regular de eventos.

Tenga en cuenta que la implementación de ejemplo de MSDN de IObservable<T> es incorrect; el equipo de doc ha sido notificado.

+1

hola gracias por su respuesta, podrían por favor elaborar más sobre "habilitación 'LINQ a Eventos.' Por lo que puede componer fácilmente 'flujos de eventos' o dar un ejemplo? Adiel. –

+2

El [página Rx wiki] (http://rxwiki.wikidot.com/101samples#toc15) tiene varios tipos de ejemplos de LINQ to Events. También está el famoso "arrastrar y soltar" [video] (http://channel9.msdn.com/posts/J .Van.Gogh/Writing-your-first-Rx-Application /). –

+0

+0 Apuesto a que tiene mucha información para el # 2 que no ha suministrado: P –

Cuestiones relacionadas