2010-03-31 13 views
73

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?Buen ejemplo de extensiones reactivas Use

+2

Escribí una demostración de la búsqueda de Bing en WPF con Rx: http: //blog.andrei.rinea.ro/2013/06/01/bing-it-on-reactive-extensions-story-code-and-slides/ –

+1

Respondo exactamente esta pregunta en una serie de publicaciones en mi blog: http://rehansaeed.co.uk/reactive-extensions-part1-replace-events/ –

+0

Por favor, eche un vistazo a https://github.com/AdaptiveConsulting/ReactiveTraderCloud. Creo que es un buen ejemplo porque usaron mucha extensión reactiva para su muestra. ¡Aclamaciones! – thangchung

Respuesta

36

Para un montón de buenos ejemplos, véase the 101 Rx Samples wiki

+11

Gracias por el enlace. Hay algunas muestras bastante buenas allí. Todavía no veo ese golpe de cabeza: "oh, ese es el problema canónico que esto soluciona". Por otra parte, podría ser que yo sea lento en la captación. –

+7

Dobladillo ... a pesar de su puntaje alto, esta respuesta sigue siendo "solo enlace". ¿Podrías quizás desarrollarlo un poco? – Jubobs

4
  • measurments dispositivo
  • datos comming en más de un bus de mensajes

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

+0

Buenos ejemplos. Gracias. –

25

Antes 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 cuando necesite ejecutar su código asincrónicamente. Por ejemplo, llamar a un servicio web o cargar una imagen grande.

Pero cuando realmente comienza a brillar - si su programa llega a cierta "masa crítica" de uso IObservable y usted comienza a combinar, observables diferentes que usted se sorprenderá de cómo se hacen fáciles algunas tareas.

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 donde 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 arrastre, o un punto de vista de empuje, y poder controlar la dirección o los medios, es muy poderoso, porque ahora puede empujar y jalar cálculos a voluntad , utilizando operadores de consulta LINQ para "libre", contra un IO, porque es el doble matemático de IE.

0

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 (los métodos de acción que se llamaron, mediante el cual usuario, etc.). Parece que Rx puede ayudar con muchas cosas en este proyecto, como la gestión de simultaneidad y la aceleración.

26

Rx le permite escribir código que orquesta eventos concurrentes juntos. Si alguna vez usó el TPL (por ejemplo, Tarea), luego tuvo que hacer volteretas 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 vuelvan, haga otra cosa. Si cualquiera de ellas falla, falla todo".

Divulgación, enchufe Shameless: The book that Jesse Liberty and I wrote about Rx fue diseñado para resolver exactamente esta pregunta, "¿Cómo uso Rx en mi trabajo diario?"; "¿Qué puedo hacer con esto?"

+0

Esto dejó en claro que necesito o quiero Rx – frostymarvelous

Cuestiones relacionadas