Описание тега system.reactive
Краткое введение
system.reactive относится к Reactive Extensions (Rx), библиотеке для создания асинхронных и основанных на событиях программ с использованием наблюдаемых последовательностей и операторов запросов в стиле LINQ. System.Reactive - это корневое пространство имен, используемое через библиотеку. Используя Rx, разработчики представляют асинхронные потоки данных с помощью операторов LINQ и параметризуют параллелизм в асинхронных потоках данных с помощью планировщиков. Проще говоря, Rx = Observables + LINQ + Schedulers.
Независимо от того, разрабатываете ли вы традиционное настольное или веб-приложение, вам время от времени приходится иметь дело с асинхронным программированием и программированием на основе событий. Настольные приложения имеют операции ввода-вывода и дорогостоящие вычислительные задачи, выполнение которых может занять много времени и потенциально заблокировать другие активные потоки. Кроме того, обработка исключений, отмены и синхронизации затруднена и подвержена ошибкам.
Используя Rx, вы можете представить несколько потоков асинхронных данных (которые поступают из разных источников, например, котировки акций, твиты, компьютерные события, запросы веб-сервисов и т. Д., И подписаться на поток событий с помощью IObserver<T>
интерфейс. ВIObservable<T>
интерфейс уведомляет подписанного IObserver<T>
интерфейс всякий раз, когда происходит событие.
Поскольку наблюдаемые последовательности являются потоками данных, вы можете запрашивать их с помощью стандартных операторов запросов LINQ, реализованных с помощью методов расширения Observable. Таким образом, с помощью этих стандартных операторов LINQ вы можете легко фильтровать, проецировать, агрегировать, составлять и выполнять операции на основе времени с несколькими событиями. Кроме того, существует ряд других операторов, специфичных для реактивного потока, которые позволяют писать мощные запросы. Отмена, исключения и синхронизация также корректно обрабатываются с помощью методов расширения, предоставляемых Rx.
Rx дополняет и без проблем взаимодействует с обоими синхронными потоками данных (IEnumerable<T>
) и однозначные асинхронные вычисления (Task<T>
).
Источник и дополнительная информация
Проект активно развивается Microsoft Open Technologies, Inc. в сотрудничестве с сообществом разработчиков открытого кода. Исходный код размещен на github здесь.
Дополнительная документация, видео, учебные пособия и практические занятия доступны на MSDN, а справка и обсуждения - на форумах Rx.
ReactiveX был перенесен на многие платформы, и здесь можно найти информацию о поддерживаемых платформах и ссылки на реализации для конкретных платформ.