Реактивные расширения официально запущены


Реактивные расширения — это еще один шаг на пути к освоению асинхронного программирования, и это касается не только .NET — существует также версия JavaScript.

Согласно домашней странице Reactive Extensions:
Reactive Extensions (Rx) — это библиотека для создания асинхронных программ и программ, основанных на событиях, с использованием наблюдаемых последовательностей и операторов запросов в стиле LINQ.
Это не имеет большого смысла, если вы не знаете, что такое наблюдаемая последовательность. В большинстве случаев для обработки коллекции вы выполняете итерацию по коллекции, которая обычно считается завершенной. Последовательность Observable не обязательно завершается, когда вы начинаете обрабатывать ее коллекцию, и чтобы справиться с этим, Observable будет вызывать метод обработки каждый раз, когда есть какие-то данные для обработки. Это создает асинхронную итерацию, которая обычно выполняется в отдельном потоке.
Используя Rx, разработчики представляют асинхронные потоки данных с помощью Observables, запрашивают асинхронные потоки данных с помощью операторов LINQ и параметризуют параллелизм в потоках асинхронных данных с помощью планировщиков.
Проще говоря, Rx = Observables + LINQ + Schedulers.
Независимо от того, создаете ли вы традиционное настольное или веб-приложение, вам время от времени приходится иметь дело с асинхронным программированием и программированием на основе событий. В настольных приложениях есть операции ввода-вывода и дорогостоящие вычислительные задачи, выполнение которых может занять много времени и потенциально блокировать другие активные потоки. Кроме того, обработка исключений, отмены и синхронизации затруднена и подвержена ошибкам.
Используя Rx, вы можете представлять несколько потоков асинхронных данных (которые поступают из разных источников, например, котировки акций, твиты, компьютерные события, запросы веб-сервисов и т. Д.) И подписываться на поток событий с помощью интерфейса IObserver . Интерфейс IObservable уведомляет подписанный интерфейс IObserver всякий раз, когда происходит событие.
Поскольку наблюдаемые последовательности являются потоками данных, вы можете запрашивать их, используя стандартные операторы запросов LINQ, реализованные типом Observable. Таким образом, с помощью этих статических операторов LINQ вы можете легко фильтровать, проецировать, агрегировать, составлять и выполнять операции на основе времени с несколькими событиями. Кроме того, существует ряд других операторов, специфичных для реактивного потока, которые позволяют писать мощные запросы. Отмена, исключения и синхронизация также корректно обрабатываются с помощью методов расширения, предоставляемых Rx.

Загрузки доступны здесь:
Реактивные расширения (Rx) v1.0.10621
Reactive Extensions v1.1.10621 (Экспериментальная)
а на Channel 9 есть вводные видеоролики:

Кроме того, в сообщении на Rx Forum от Барта де Смета, одного из членов Rx-команды и автора C # 4.0 Unleashed (см. Обзор I Programmer), сообщается, что Interactive Extensions (Ix) также возвращается в виде отдельной загрузки:
Экспериментальный выпуск Interactive Extensions v1.1.10621
Барт комментирует:
Мы сосредоточились на восстановлении функциональности, которая важна для большинства людей, устранили ряд операторов, которые нам не очень нравились (например, агрегаты * Enumerable), восстановили паритет с Rx, где это необходимо, и добавили поддержку IQueryable с помощью тип QueryableEx в System.Interactive.Providers. Кроме того, есть больше и лучше комментариев в XML-документах.
Версия Rx для JavaScript, RxJS, следует тому же общему дизайну, но использует объекты JavaScript для реализации наблюдаемых последовательностей.
Больше информации:
Домашняя страница Rx в Центре разработчиков данных MSDN


Добавить комментарий