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


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

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

16 200

16 ответов:

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

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

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

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

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

вот Вики-сайт с большим количеством примеров кода, демонстрирующих, как использовать различные функции .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. На этом же сайте есть продолжение первой части.

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

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

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

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

  • Часть 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-типы ключей, и показал основные функции.