sharp que metodos metodo extensions extension create c# .net system.reactive

c# - que - Buen ejemplo de uso de extensiones reactivas



que es un metodo de extension c# (6)

Acabo de echarle el primer vistazo a Rx, pero un proyecto divertido para el que lo usaré es crear un widget de Silverlight que muestre actividad en nuestra aplicación web ASP.NET MVC (a qué métodos de acción se llamó, por qué usuario, etc.) . Parece que Rx puede ayudar con muchas cosas en este proyecto, como la gestión de simultaneidad y la aceleración.

Entiendo los conceptos básicos de Rx. ¿Dónde estoy luchando es cómo usarías esto más allá de los ejemplos académicos? ¿Cuáles son algunos escenarios comunes y simples del mundo real donde Rx es una solución mucho mejor que la que tenemos hoy en día en .NET?



Primero que nada, IObservable es un evento . Por lo tanto, en cualquier lugar donde use eventos internamente, puede usar IObservable, y si luego necesita aplicar LINQ a este evento, puede hacerlo sin refactorizar.

En segundo lugar, RX es apto para cualquier situación en la que necesite ejecutar su código de forma asincrónica . Por ejemplo, llamar a un servicio web o cargar una imagen grande.

Pero cuando realmente comienza a brillar, si su programa alcanza cierta "masa crítica" de uso IObservable y comienza a combinar diferentes observables, se sorprenderá de lo fácil que resultan algunas tareas.


Rx es muy general, por lo que tiene una utilidad ilimitada, al igual que IEnumerable / IEnumerator tiene una utilidad ilimitada. IE extrae valores, IO empuja valores.

Foreach es un ejemplo concreto de dónde IEnumerables son útiles, pero eso no explica IEnumerable, ni yield ni nada. Lo mismo ocurre con Rx.

Ser capaz de ver algo desde un punto de vista de extracción, o un punto de vista de empuje, y ser capaz de controlar la dirección o los medios, es muy poderoso, porque ahora puede empujar y jalar los cálculos a voluntad, usando la consulta LINQ operadores para "libre", contra un IO, porque es el doble matemático de IE.


Rx le permite escribir código que orquesta eventos concurrentes juntos. Si alguna vez usó el TPL (es decir, la Tarea), luego tuvo que hacer volteretas intrincadas para tratar de continuar con o esperar todo en las cosas correctas, Rx es para usted.

Por ejemplo, el flujo de trabajo de "Para cada elemento de esta matriz, llame a un servicio web, y cuando todas esas solicitudes vuelvan, haga otra cosa. Si cualquiera de ellas falla, falle por completo".

Divulgación, enchufe desvergonzado: el libro que Jesse Liberty y yo escribimos sobre Rx fue diseñado para resolver exactamente esta pregunta: "¿Cómo uso Rx en mi trabajo diario?"; "¿Qué puedo hacer con esto?"


  • Medidas del dispositivo
  • Datos que llegan en un bus de mensajes

Ahora, en ambos casos, la forma estándar de recibir los datos es a través de eventos, pero si quiero una sintaxis de consulta o composición, entonces RX me la proporciona cuando los eventos no lo hacen.