Описание тега system.reactive

System.Reactive относится к реактивным расширениям для.NET, также известным как Rx. Rx предоставляет разработчикам модель реактивного программирования поверх универсального IObservable.<t> интерфейс, в отличие от традиционной модели императивного программирования или других моделей реактивного программирования, которые строго полагаются на события.NET или определенные API. </t>

Краткое введение

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 был перенесен на многие платформы, и здесь можно найти информацию о поддерживаемых платформах и ссылки на реализации для конкретных платформ.

Связанные теги