c# - Buena introducción al Marco Reactivo.NET
asynchronous system.reactive (16)
Aparte de la documentación de Microsoft, ¿hay una buena introducción y un tutorial para el marco de Microsoft Reactive (Rx)?
Además, ¿cuál es un buen ejemplo (con código) que Reactivo facilita un problema de programación que es difícil de resolver utilizando técnicas de codificación asíncrona convencionales?
¿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 marco reactivo .NET (Rx)
Además de los enlaces de Andreas Hoffmann (me parecieron muy útiles cuando estaba aprendiendo Rx)
Estos son algunos de los videos de Bart De Smet (un tipo MUY inteligente que explica las cosas realmente bien):
Un poco más de Rx:
Rx - Curando su programación asincrónica Blues
Algunos interiores sangrientos + alguna filosofía, estos videos son realmente esclarecedores:
Min LINQ - La esencia de LINQ
(El video anterior trata de cómo LINQ un poco se relaciona con otras cosas, como Rx)
Aquí hay un ejemplo de algo que es fácil de hacer con la programación reactiva, pero desordenado (si no es desafiante) con eventos clásicos, dibuja líneas mientras el botón del mouse está presionado. Es legible, no hay un manejo explícito del estado:
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 compostable, como IEnumerable.
Yo recomiendo el video mencionado en otra respuesta. De hecho, hay varios videos diferentes sobre el tema en Channel9:
Aquí hay un sitio wiki con muchos ejemplos de código que muestran cómo usar diferentes características del marco .NET Rx: http://rxwiki.wikidot.com/101samples
Descubrí que este es el sitio más completo que existe y el más rápido para comenzar.
Curiosamente, la Rx-Framework Reactive Extensions enlaza con una docena de videos y blogs, pero se olvida de enlazar con la completa documentación de referencia oficial. Es una verdadera lástima, si conoce al equipo, ¡pídales que arreglen su sitio web!
Jesse Liberty tiene un libro publicado en octubre de 2011:
Amazon.com: Programación de extensiones reactivas y LINQ
Y hay los videos de RxWorkshop en Channel9:
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.
Me gustó Introducción a Rx Parte 1 - Tipos de clave , y mostró las características clave.
Para responder a la segunda pregunta, aquí hay un problema que puede beneficiarse mucho de Rx. Se llama "Hazte rico rápido".
Has desarrollado un juego con el mismo nombre y se está vendiendo bastante bien. Pero está disponible solo en sus tiendas para mayoristas. 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 :))
El personal de ventas coloca fajos de efectivo en él sin etiquetas que indiquen la cantidad y el tipo de facturas en el fajo. Tu trabajo es ordenar y contar el dinero. Más adelante, cuando obtenga más dinero, puede contratar a otros para que lo ayuden.
En este caso, la fuente es una fuente asíncrona de fajos de efectivo (Productor). Sus empleados y proveedores esperan dinero, pero usted debe consumir los fajos, desempaquetarlos y usar su lógica empresarial personalizada para volver a empaquetarlos según corresponda para pagarlos.
El personal de ventas se está ejecutando en su propio hilo, de modo que no tienen que esperar a que cuente lo que tiran en el cinturón. Su tiempo se utiliza mejor si se le dice cuándo hay más dinero disponible para contar, hasta que pueda hacer otro trabajo.
Podrías representar cada fajo con 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 subproceso, o en un entorno de subprocesos múltiples con el que es demasiado difícil trabajar, tiende a agregarlos y procesarlos. ¡¡Ya no!!
Puede encontrar útil esta serie de artículos (hay cuatro) sobre LINQ reactivo: Programación reactiva (II.) - Introducción de LINQ reactivo .
Tiene un ejemplo de cómo escribir un juego usándolo, así que espero que sea lo que estás buscando.
Revise estos artículos y, en particular, descargue el código fuente relacionado y juegue con él.
- Parte I - System.Reactive o las Extensiones Reactivas .NET (Rx) - Conceptos y Primera Mirada
- Parte II - LINQ to Events - Más sobre Extensiones reactivas .NET (Rx)
- Parte III - LINQ to Events - Generación de métodos de contenedor GetEventName () usando plantillas de texto T4
Confía en que esto ayudará
Sitio de MSDN para Rx-Framework
Para un desarrollador que va más allá, el código fuente
Nota austriaca fresca sobre Rx
Esto es lo mejor que he visto: DevCamp 2010 Keynote - Rx: Curando su programación asincrónica blues
Algunos videos interesantes en el canal 9
Kim Hamilton y Wes Dyer: Inside .NET Rx y IObservable / IObserver en el BCL (VS 2010)
Una entrevista con el creador de Rx: Expert to Expert: Brian Beckman y Erik Meijer - Dentro de .NET Reactivo Framework (Rx)
Una introducción del creador de Rx.
- E2E: Erik Meijer y Wes Dyer - Marco reactivo (Rx) Bajo el capó 1 de 2
- E2E: Erik Meijer y Wes Dyer - Marco reactivo (Rx) Bajo el capó 2 de 2
Un Article Codeproject
Otro curso de primer blog con enlaces (nuevo).
También encontré Introducción a la Parte I del Marco Reactivo en CodeBetter.com
. Hay una secuela de la primera parte en el mismo sitio.
Espero que esto ayude.
Una vez que haya HandsOnLab algunas de las cosas básicas, incluido el HandsOnLab asegúrese de revisar los Observables fríos y calientes de Lee Campbell, que me quitaron algo del misterio arcano de Rx :)
DEVHOL202 - Curar los blues asíncronos con las extensiones reactivas 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 sobre lo que ha aprendido.
También hay una versión de JavaScript. Busque en Google "Manos en el laboratorio con extensiones reactivas".
ACTUALIZACIÓN : Las publicaciones de blog a continuación han sido reemplazadas por mi libro en línea 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 satisface sus necesidades o expectativas, hágamelo saber (al Autor) 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 ,
- Introducción a Rx
- Métodos estáticos y de extensión.
- Gestión de por vida - Completar y cancelar la suscripción
- Control de flujo
- Combinando múltiples flujos de IObservable
- Programación y enhebrado.
- Observables fríos y calientes
- Prueba de Rx
- Buffer, ventana, unirse y unirse a un grupo
Seguiré actualizando este blog con más cosas introductorias de Rx.
Para cosas más avanzadas desea ir al Foro de Rx (MSDN).