Хорошее введение в the.NET реактивный каркас [закрыт]

помимо документации Microsoft, есть ли хорошее введение и учебник для Microsoft Reactive (Rx) framework?

кроме того, каков хороший пример (с кодом), который Reactive упрощает задачу программирования, которую сложно решить с помощью обычных методов асинхронного кодирования?

16 ответов


обновление: сообщения в блоге ниже были заменены моей онлайн-книгой www.IntroToRx.com. Это всеобъемлющий 19 Глава книга доступна бесплатно. Вы можете просмотреть его в интернете или загрузить версию mobi для kindle. Вы также можете получить его прямо из Amazon за небольшую плату (~99c / 77p). Если книга не отвечает вашим потребностям или ожиданиям, дайте мне (автору) знать, и мы сделаем лучше для v2.

Спасибо за ссылку на горячий / холодный пост. Это только одна часть полная серия,

  1. введение в Rx
  2. статические и методы расширения
  3. Lifetime management-завершение и отмена подписки
  4. управление потоком
  5. объединение нескольких IObservable потоков
  6. планирование и многопоточность
  7. горячие и холодные наблюдаемые
  8. Тестирование Rx
  9. буфер, окно, соединение и группа Присоединяйтесь

Я буду продолжать обновлять этот блог с более RX вводный материал.

для более продвинутых вещей вы хотите перейти к Rx Форум (MSDN).


вот сайт wiki с большим количеством примеров кода, демонстрирующих, как использовать различные функции .NET RX framework:http://rxwiki.wikidot.com/101samples

Я обнаружил, что это самый полный сайт там, и тот, который быстрее всего начать.



вот пример того, что легко сделать с реактивным программированием, но беспорядочно (если не сложно) с классическими событиями, он рисует линии, когда кнопка мыши опущена. Это читаемо, нет явной обработки состояния:

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)); 

(Я должен признаться, что в этом примере, попарно() является доморощенным...)

самое главное в IObservable - это то, что он "композиционный", как и IEnumerable.

Я thouroughly порекомендуйте видео, упомянутое в другом ответе. На самом деле есть несколько различных видео на эту тему на Channel9:


Как только вы прошли через некоторые из основных вещей, включая HandsOnLab убедитесь, что вы проверить горячие и холодные наблюдаемые ли Кэмпбелла который взял часть тайной тайны из Rx для меня:)


вы можете найти эту серию статей (их четыре) о reactive LINQ полезной: реактивное программирование (II.) - Представляем реактивный LINQ.

У него есть пример написания игры с его помощью, поэтому, надеюсь, это то, что вы ищете.


Я нашел представляем реактивный каркас Часть I on CodeBetter.com. На том же сайте есть продолжение первой части.

Я надеюсь, что это поможет вам.


странно, реактивные расширения Домашняя страница ссылки на десяток видео и блогов, но забывает ссылаться на всеобъемлющую официальную справочную документацию. Это вопиющий позор, если вы знаете команду, пожалуйста, попросите их исправить свой сайт!


сыграет с Песочница Rx чтобы получить очень интуитивное представление о том, что означают различные комбинаторы. Это лучший инструмент обучения, который я видел.


просмотрите эти статьи и, в частности, загрузите соответствующий исходный код и поиграйте с ним.

  • Часть I

чтобы ответить на второй вопрос, вот проблема, которая может принести большую пользу от Rx. Это называется "быстро разбогатеть".

вы разработали игру с тем же именем, и она продается довольно хорошо. Но он доступен только в ваших магазинах для оптовой продажи. Чтобы облегчить обработку денежных средств, у вас есть конвейерная лента, которая течет к вам.

(пожалуйста, не стесняйтесь изменить историю выше :) )

люди Сбываний устанавливают связанные пачки наличных денег на ем без ярлыков указание суммы и типа купюр в пачке. Ваша работа-сортировать и считать деньги. Позже, когда вы получите больше денег, вы можете нанять других, чтобы помочь вам.

в этом случае источником является асинхронный источник пачки наличных денег (производитель). Ваши сотрудники и поставщики ожидают денег, но вы должны потреблять пачки, распаковывать их и использовать свою собственную бизнес-логику для переупаковки, когда это необходимо, чтобы заплатить им.

люди продаж работают в своем собственном потоке, так что им не нужно ждать, пока вы посчитаете, что они бросают на пояс. Ваше время лучше всего использовать, если вам говорят, когда больше денег доступно для подсчета, до тех пор вы можете делать другую работу.

вы можете представить каждый пыж байтом[].

Это довольно распространенная ситуация в реальном мире; когда вы получаете какой-либо ресурс [например, веб-страницы для поисковых систем, изображений или видео] в сети или данных из периферийных устройств, вы получаете их в кусках байтов (возможно, с заголовками). В одном потоке или в многопоточной среде, с которой слишком сложно работать, вы склонны агрегировать и обрабатывать их. Больше нет!!


у Джесси Либерти есть книга, опубликованная в октябре 2011 года:

Amazon.com: Программирование реактивных расширений и LINQ

и есть видео RxWorkshop на Channel9:

Channel9: RxWorkshop


распространяется ли ваше предложение" исключая документацию Microsoft " на видео на канале 9?

от создателя реактивной структуры Эрика Мейера: - эксперт эксперту: Брайан Бекман и Эрик Мейер-внутри .NET Reactive Framework (Rx)

новое: начало работы с расширениями Rx для .NET


в дополнение к ссылкам Андреаса Хоффмана (нашел их очень полезными, когда я изучал Rx)

вот некоторые из Барт Де Смет (очень умный парень, который объясняет вещи очень хорошо) Видео:

своего рода пробег через Rx:
Rx-лечение асинхронного программирования Блюз

некоторые кровавые внутренности + некоторая философия, эти видео действительно просветляющие:
Min LINQ-сущность LINQ
(Выше видео сделок с тем, как LINQ относится к другим вещам, таким как Rx)

наблюдения на IQbservable-двойник IQueryable


DEVHOL202-лечение асинхронного блюза с реактивными расширениями для .NET (PDF, 2 MB) - лучшая лаборатория/учебник, который я видел до сих пор. Он проведет вас через основы библиотеки, так что вы можете строить и проектировать на то, что вы узнали.

существует также версия JavaScript. Поиск Google для "реактивные расширения руки на лаборатории".


Мне понравилось введение в Rx Часть 1-ключевые типы, и показал основные функции.