Слайд 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, а вычисления — другими.
Слайд 5IObserver
Предоставляет механизм получения уведомлений. Интерфейс объявляет три метода:
void
OnNext(T value) — предоставляет следующий элемент в последовательности.
void OnError(Exception ex)
— позволяет передать Exception и адекватно его обработать. Подразумевается, что после этого сообщения последовательность заканчивается и наблюдателям больше не нужно следить за изменениями.
void OnCompleated() — сообщается, что последовательность закончилась и больше не будет новых сообщений, не нужно их ожидать.
Слайд 6IObservable
Производит уведомления и позволяет подписываться наблюдателям. Объявляет один метод:
IDisposable
Subscribe(IObserver observer) — принимает наблюдателя (IObserver) параметром и подписывает его
на сообщения. Обратите внимание, что метод возвращает IDisposable, с помощью чего можно потом вызывать метод Dispose, тем самым отписав и уничтожив наблюдателя.
Слайд 7 В отличии от интерфейсов IObserver и IObservable, которые находятся в сборке System.Observable, классы Observable и Observer находятся в
сборке System.Reactive, являются статическими, и главной их функцией являются LINQ-образные расширения
для Rx.
Слайд 8 Rx также очень хорошо подходит для введения и управления параллелизмом
с целью разгрузки . То есть выполнение заданного набора работ одновременно для освобождения
текущего потока. Очень популярное использование этого - поддержка адаптивного интерфейса.
Слайд 9Поддерживаемые языки
JavaScript
Java
C++
Python
Ruby