Buena introducción al .NET Reactive Framework

Aparte de la documentación de Microsoft, ¿hay una buena introducción y tutorial para el marco Microsoft Reactive (Rx)?

Además, ¿cuál es un buen ejemplo (con código) de que Reactive hace más fácil un problema de progtwigción que es difícil de resolver usando técnicas convencionales de encoding asíncrona?

ACTUALIZACIÓN : Las publicaciones del blog a continuación han sido reemplazadas por mi libro en línea http://www.IntroToRx.com . Es un libro completo de 19 capítulos disponible de forma gratuita. Puede navegar en la web o descargar la versión de mobi para su kindle. También puede obtenerlo directamente de Amazon por una pequeña tarifa (~ 99c / 77p). Si el libro no cumple con sus necesidades o expectativas, permítame (el autor) saber y lo haremos mejor para v2.

Gracias por el enlace a la publicación Hot / Cold. Esta es solo una parte de la serie completa ,

  1. Introducción a Rx
  2. Estática y métodos de extensión
  3. Gestión de por vida: completar y cancelar suscripción
  4. Control de flujo
  5. Combinando varias transmisiones IObservable
  6. Progtwigción y subprocesamiento
  7. Observables calientes y frías
  8. Prueba Rx
  9. Buffer, Window, Join y Group Join

Seguiré actualizando este blog con más material introductorio sobre Rx.

Para cosas más avanzadas, desea ir al Rx Forum (MSDN).

Aquí hay un sitio wiki con muchos ejemplos de código que demuestran cómo usar diferentes características del .NET Rx framework: http://rxwiki.wikidot.com/101samples

Descubrí que este es el sitio más completo que existe y el más rápido para comenzar.

Sitio de MSDN para Rx-Framework

Para un desarrollador que va más allá, el código fuente

Cool keynote austriaco sobre Rx

Esto es lo mejor que he visto: DevCamp 2010 Keynote – Rx: curando sus blues de progtwigción asíncrona

Algunos videos interesantes en el canal 9

Kim Hamilton y Wes Dyer: Inside .NET Rx e IObservable / IObserver en BCL (VS 2010)

Una entrevista con el creador de Rx: experto a experto: Brian Beckman y Erik Meijer – Dentro del .NET Reactive Framework (Rx)

Una introducción del creador de Rx

  • E2E: Erik Meijer y Wes Dyer – Reactive Framework (Rx) Under the Hood 1 de 2
  • E2E: Erik Meijer y Wes Dyer – Reactive Framework (Rx) Under the Hood 2 de 2

Un artículo de CodeProject

Otro curso primer blog con enlaces (nuevo)

Aquí hay un ejemplo de algo que es fácil de hacer con la progtwigción reactiva, pero desordenado (si no desafiante) con eventos clásicos, dibuja líneas mientras el botón del mouse está presionado. Es legible, no hay un manejo de estado explícito:

var pen = new Pen(Color.Red, 3); var graphics = this.CreateGraphics(); var mouseMoveWhileDown = from md in this.GetMouseDown() from mv in this.GetMouseMove().Until(this.GetMouseUp()) select new Point(mv.X, mv.Y); mouseMoveWhileDown .Pairwise() .Subscribe(tup => graphics.DrawLine(pen, tup.Item1, tup.Item2)); 

(Debo confesar que en ese ejemplo, Pairwise () es de cosecha propia …)

Lo más importante de IObservable es que es ‘composable’, al igual que IEnumerable.

Recomiendo completamente el video mencionado en otra respuesta. De hecho, hay varios videos diferentes sobre el tema en Channel9:

Una vez que hayas pasado por algunas de las cosas básicas, incluido el HandsOnLab, asegúrate de echar un vistazo a los observables calientes y fríos de Lee Campbell, que me quitaron parte del misterio arcano de Rx 🙂

Puede encontrar útil esta serie de artículos (hay cuatro) sobre LINQ reactivo: Progtwigción reactiva (II.) – Presentación de LINQ reactivo .

Él tiene un ejemplo de cómo escribir un juego usándolo, así que con suerte debería ser lo que estás buscando.

También encontré Introducing the Reactive Framework Part I en CodeBetter.com . Hay una secuela de la primera parte en el mismo sitio.

Espero que esto ayude.

Curiosamente, la página de inicio de Reactive Extensions se vincula a una docena de videos y blogs, pero se olvida de vincular a la documentación de referencia oficial completa. Es una pena vergüenza, si conoces al equipo, ¡pídeles que arreglen su sitio web!

Juega con Rx Sandbox para obtener una visión muy intuitiva de lo que significan los diferentes combinadores. Esta es la mejor herramienta de aprendizaje que he visto.

Repase estos artículos y, en particular, descargue el código fuente relacionado y juegue con él.

  • Parte I – System.Reactive o .NET Reactive Extensions (Rx) – Conceptos y primera vista
  • Parte II – LINQ to Events – Más sobre .NET Reactive Extensions (Rx)
  • Parte III – LINQ to Events – Generación de métodos de contenedor GetEventName () utilizando plantillas de texto T4

Confiar en esto ayudará

Para responder a la segunda pregunta, aquí hay un problema que puede beneficiar mucho de Rx. Se llama “Hazte rico rápidamente”.

Has desarrollado un juego con el mismo nombre y se está vendiendo bastante bien. Pero está disponible solo en sus tiendas para venta al por mayor. Para facilitar el procesamiento de efectivo, tiene una cinta transportadora que fluye hacia usted.

(Por favor, siéntase libre de cambiar la historia de arriba :))

Los vendedores colocan fajos de efectivo en efectivo sin tags que indiquen la cantidad y el tipo de billetes en el fajo. Tu trabajo es ordenar y contar el dinero. Más adelante, cuando obtienes más dinero, puedes contratar a otros para que te ayuden.

En este caso, la fuente es una fuente asincrónica de fajos de efectivo (Productor). Sus empleados y proveedores esperan dinero, pero usted tiene que consumir los fajos, descomprimirlos y usar su lógica comercial personalizada para reempaquetar según corresponda para pagarlos.

Los vendedores están ejecutando su propio hilo, para que no tengan que esperar a que cuentes lo que tiran en el cinturón. Su tiempo se utiliza mejor si le dicen cuándo hay más dinero disponible para contar, hasta entonces puede hacer otro trabajo.

Podrías representar cada fajo por un byte [].

Esta es una situación del mundo real bastante común; cuando recupera cualquier recurso [por ejemplo, páginas web para motores de búsqueda, imágenes o videos] en una red o datos de periféricos, los obtiene en trozos de bytes (posiblemente con encabezados). En un solo hilo, o en un entorno de múltiples hilos con el que es demasiado difícil trabajar, tiende a agregarlos y procesarlos. ¡¡Ya no!!

Jesse Liberty tiene un libro publicado, publicado en octubre de 2011:

Amazon.com: Progtwigción de extensiones reactivas y LINQ

Y están los videos de RxWorkshop en Channel9:

Channel9: RxWorkshop

¿Su cláusula de “exclusión de la documentación de Microsoft” se extiende a los videos en el Canal 9?

Del creador del marco reactivo Erik Meijer: – Experto a Experto: Brian Beckman y Erik Meijer – Dentro del .NET Reactive Framework (Rx)

Nuevo : Comenzando con las extensiones de Rx para .NET

Además de los enlaces de Andreas Hoffmann (los encontré muy útiles cuando estaba aprendiendo Rx)

Estos son algunos de Bart De Smet (un chico muy inteligente que explica las cosas muy bien) Videos:

Un poco de Rx:
Rx – Curando su progtwigción asincrónica Blues

Algunos aspectos sangrientos + alguna filosofía, estos videos son realmente esclarecedores:
Min LINQ – La esencia de LINQ
(El video anterior trata sobre cómo LINQ se relaciona con otras cosas, como Rx)

Observaciones sobre IQbservable: el Dual de IQueryable

DEVHOL202: curar el blues asincrónico con Reactive Extensions para .NET (PDF, 2 MB) es el mejor laboratorio / tutorial que he visto hasta ahora. Lo guía a través de los conceptos básicos de la biblioteca, para que pueda construir y diseñar lo que ha aprendido.

También hay una versión de JavaScript. Busque en Google “Extensiones reactivas Hands on Lab”.

Me gustó Introduction to Rx Part 1 – Key types , y mostró las características principales.