Buen ejemplo de uso de extensiones reactivas [cerrado]

81

Entiendo los conceptos básicos de Rx. Lo que 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 en los que Rx es una solución mucho mejor que la que tenemos hoy en .NET?

Keith Hill
fuente
3
Escribí una demostración de la búsqueda de Bing en WPF con Rx: blog.andrei.rinea.ro/2013/06/01/…
Andrei Rînea
2
Respondo exactamente esta pregunta en una serie de publicaciones en mi blog: rehansaeed.co.uk/reactive-extensions-part1-replacing-events
Muhammad Rehan Saeed
1
Eche un vistazo a github.com/AdaptiveConsulting/ReactiveTraderCloud . Creo que es un buen ejemplo porque usaron mucha extensión reactiva para su muestra. ¡Salud!
thangchung

Respuestas:

40

Para ver un montón de buenos ejemplos, consulte el wiki de 101 Rx Samples

sblom
fuente
13
Gracias por el enlace. Allí hay algunas muestras bastante buenas. Todavía no veo el ejemplo de "oh, ese es el problema canónico que esto resuelve". Por otra parte, podría ser que yo sea lento en la asimilación.
Keith Hill
9
Hem ... a pesar de su alta puntuación, esta respuesta sigue siendo "solo enlace". ¿Quizás podrías darle un poco más de profundidad?
jub0bs
¿no son académicos ?
Lei Yang
28

Rx le permite escribir código que orquesta eventos concurrentes juntos. Si alguna vez usó el TPL (es decir, Tarea), luego tuvo que hacer volteretas hacia atrás complicadas para intentar 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 regresen, haga otra cosa. Si alguna de ellas falla, fallará toda".

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

Ana Betts
fuente
Esto acaba de dejar en claro que necesito o quiero Rx
frostymarvelous
25

En primer lugar, IObservable es un evento . Entonces, 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 se adapta a 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 una "masa crítica" de uso de IObservable y comienza a combinar diferentes observables, se sorprenderá de lo fáciles que se vuelven algunas tareas.

Sergey Aldoukhov
fuente
5
  • Medidas del dispositivo
  • Entrada de datos a través de un bus de mensajes

En ambos casos, ahora, la forma estándar de recibir los datos es a través de eventos, pero si quiero la sintaxis de la consulta o la composición, RX me la da donde los eventos no lo hacen.

Scott Weinstein
fuente
2

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 los IEnumerables son útiles, pero eso no explica IEnumerable, ni el rendimiento ni nada. Lo mismo ocurre con Rx.

Ser capaz de mirar algo desde un punto de vista de extracción o un punto de vista de empuje, y poder controlar la dirección o los medios, es muy poderoso, porque ahora puede empujar y tirar cálculos a voluntad, utilizando la consulta LINQ operadores "gratis", contra un IO, porque es el dual matemático de IE.

Richard Anthony Hein
fuente
0

Acabo de ver por primera vez Rx, pero un proyecto divertido para el que lo usaré es crear un widget de Silverlight que muestre la actividad en nuestra aplicación web ASP.NET MVC (qué métodos de acción fueron llamados, qué usuario, etc.) . Parece que Rx puede ayudar con muchas cosas en este proyecto, como la administración de concurrencia y el Throttling.

Adrian Grigore
fuente