c# .net asynchronous system.reactive

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?



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)

Observaciones en IQbservable - El Dual de IQueryable


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.




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.



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!!








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 ,

  1. Introducción a Rx
  2. Métodos estáticos y de extensión.
  3. Gestión de por vida - Completar y cancelar la suscripción
  4. Control de flujo
  5. Combinando múltiples flujos de IObservable
  6. Programación y enhebrado.
  7. Observables fríos y calientes
  8. Prueba de Rx
  9. 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).