775.90K
Category: softwaresoftware

Reactive Extensions или Rx

1.

RX. NET

2.

Reactive Extensions или Rx (по аналигии с PFX) или
“реактивные расширения” – это библиотека, точнее набор
библиотек, которые позволяют работать с событиями и
асинхронными вызовами в композиционном стиле, в т.ч.
через Linq.
Цель этого фреймворка – помочь разработчикам
писать код в котором фигурирует асинхронное
взаимодействие.

3.

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

4.

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

5.

IOBSERVER <IN Т>
• Предоставляет механизм получения уведомлений. Интерфейс объявляет
три метода:
• void OnNext(T value) — предоставляет следующий элемент в
последовательности.
• void OnError(Exception ex) — позволяет передать Exception и адекватно
его обработать. Подразумевается, что после этого сообщения
последовательность заканчивается и наблюдателям больше не нужно
следить за изменениями.
• void OnCompleated() — сообщается, что последовательность
закончилась и больше не будет новых сообщений, не нужно их ожидать.

6.

IOBSERVABLE<OUT Т>
• Производит уведомления и позволяет подписываться наблюдателям.
Объявляет один метод:
• IDisposable Subscribe(IObserver<Т> observer) — принимает наблюдателя
(IObserver) параметром и подписывает его на сообщения. Обратите
внимание, что метод возвращает IDisposable, с помощью чего можно
потом вызывать метод Dispose, тем самым отписав и уничтожив
наблюдателя.

7.

В отличии от
интерфейсов IObserver<T> и IObservable<T>,
которые находятся в сборке System.Observable,
классы Observable и Observer находятся в
сборке System.Reactive, являются статическими, и
главной их функцией являются LINQ-образные
расширения для Rx.

8.

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

9.

ПОДДЕРЖИВАЕМЫЕ ЯЗЫКИ
• JavaScript
• Java
• C++
• Python
• Ruby
English     Русский Rules