Pregunta

Las interfaces

IObservable < T > e IObserver < T > se colocan directamente en el espacio de nombres System en .NET Framework 4.0 Beta2. ¿Por qué no en System.Collections.Generic , como IEnumerable < T > ?

p.s. La vista previa del Marco reactivo de Silverlight Toolkit contiene IObserver < T > en el espacio de nombres System.Collections.Generic .

¿Fue útil?

Solución

Lo que describen las nuevas interfaces IObservable / IObserver es una abstracción mucho más alta que las colecciones, que se pueden ver como un caso especial de cálculo (por eso las listas en Haskell son mónadas). Así que es obvio que dicha generalización se coloca en el espacio de nombres del sistema.

Eche un vistazo a este brillante reparto de Erik Meijer, donde describe las ideas detrás de las interfaces.

Otros consejos

IObservable es una interfaz que identifica una clase que implementa el patrón Observer . No está relacionado con las colecciones. Está más relacionado con proporcionar una alternativa a los eventos.

Aunque esta es una vieja pregunta con la que me topé, solo quería respaldar la evaluación de @ ControlFlow del "dualismo" entre IObservable e IEnumerable como una colección 'Pushed based' vs 'based based' con un enlace a Erik Meijer's 'Rx en 15 minutos ', donde se lo puede citar diciendo exactamente eso. http://channel9.msdn.com/posts / Charles / Erik-Meijer-Rx-in-15-Minutes /

En consecuencia, esta colección basada en empuje puede cambiar fundamentalmente el paradigma básico de "una serie mundana de eventos llamados" a una colección de primera clase de acciones declarativas, asíncronas, seleccionables, transitables y suscritas. Algo que hace eso pertenece al espacio de nombres BCL central o tal vez merece su propio nombre, pero está demasiado lejos de la Colección Yet-Another para compartir su espacio de nombres. Eso sí, esa es solo mi opinión.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top