Reactive Extensions или Rx

Слайд 2

Reactive Extensions или Rx (по аналигии с PFX) или “реактивные расширения”

Reactive Extensions или Rx (по аналигии с PFX) или “реактивные расширения”

– это библиотека, точнее набор библиотек, которые позволяют работать с событиями и асинхронными вызовами в композиционном стиле, в т.ч. через Linq.  Цель этого фреймворка – помочь разработчикам писать код в котором фигурирует асинхронное взаимодействие.
Слайд 3

Rx был создан в Microsoft DevLabs. На данный момент, фреймворк поддерживает

Rx был создан в Microsoft DevLabs. На данный момент, фреймворк поддерживает

.Net 3.5SP1, .Net 4RC, Silverlight 3 и JavaScript.
Rx состоит из двух базовых абстракций в пространстве имен System начиная с .NET 4.0, а именно System.IObserver и System.IObservable.
Слайд 4

ОСОБЕННОСТИ Rx библиотеки заточены на асинхронную обработку без блокировки обработки данных.

ОСОБЕННОСТИ

Rx библиотеки заточены на асинхронную обработку без блокировки обработки данных.
Rx предлагает простой API с выделенными

каналами для передачи данных, ошибок и сигнала об окончании потока данных.
В Rx библиотеках есть больше сотни операторов, которыми можно обрабатывать потоки идущие к подписчику. Операторы можно собирать в цепочки, т.е операторы composable.
В некоторых реализациях RX, например, RxJava2, хорошо поддерживается backpressure, т.е. ситуация, когда продюсер выдает данные быстрее, чем подписчик может обработать.
Для Rx messaging не нужно поднимать специальные серверы. Все включено в код вашего приложения.
В языках, которые поддерживают multi-threading, работа со threads упрощается, как и переключения с одних threads на другие. Разработчики на Андроиде — это оценят, ибо там вывод на экран всегда должен выполняться main thread, а вычисления — другими.
Слайд 5

IOBSERVER Предоставляет механизм получения уведомлений. Интерфейс объявляет три метода: void OnNext(T

IOBSERVER

Предоставляет механизм получения уведомлений. Интерфейс объявляет три метода:
void OnNext(T

value) — предоставляет следующий элемент в последовательности.
void OnError(Exception ex) — позволяет передать Exception и адекватно его обработать. Подразумевается, что после этого сообщения последовательность заканчивается и наблюдателям больше не нужно следить за изменениями.
void OnCompleated() — сообщается, что последовательность закончилась и больше не будет новых сообщений, не нужно их ожидать.
Слайд 6

IOBSERVABLE Производит уведомления и позволяет подписываться наблюдателям. Объявляет один метод: IDisposable

IOBSERVABLE

Производит уведомления и позволяет подписываться наблюдателям. Объявляет один метод:
IDisposable Subscribe(IObserver<Т>

observer) — принимает наблюдателя (IObserver) параметром и подписывает его на сообщения. Обратите внимание, что метод возвращает IDisposable, с помощью чего можно потом вызывать метод Dispose, тем самым отписав и уничтожив наблюдателя.
Слайд 7

В отличии от интерфейсов IObserver и IObservable , которые находятся в

В отличии от интерфейсов IObserver и IObservable, которые находятся в сборке System.Observable, классы Observable и Observer находятся в сборке System.Reactive,

являются статическими, и главной их функцией являются LINQ-образные расширения для Rx.
Слайд 8

Rx также очень хорошо подходит для введения и управления параллелизмом с

Rx также очень хорошо подходит для введения и управления параллелизмом с

целью разгрузки . То есть выполнение заданного набора работ одновременно для освобождения текущего потока. Очень популярное использование этого - поддержка адаптивного интерфейса.