Microsoft открыла фреймворк Reactive Extensions
На текущем этапе развития технологий многие приложения и системы собирают данные из множества источников: от сообщений в микроблогах до биржевых котировок, REST-запросов или сигналов логической шины. Библиотеки Reactive Extensions упрощают извлечение данных, поступающих асинхронно от разных ресурсов.
Фреймворк позволяет представлять потоки данных в виде квантовых наблюдаемых (observables), запрашивать потоки при помощи LINQ-операторов и синхронизировать их обработку при помощи планировщиков (schedulers). Благодаря этому удается избежать ряда проблем, с которыми сталкиваются разработчики настольных приложений и приложений для web.
К примеру, зачастую данные, поступающие асинхронно, вмешиваются в работу приложения и блокируют обработку других данных или иные процессы. Столкновение с такими данными сильно затрудняет обработку исключений и расстраивает синхронность работы приложения.
Reactive Extensions разрабатывался командой Microsoft под руководством Эрика Мейджера (Eric Meijer). Фреймворк используется в проектах таких гигантов как GitHub (Rx применяется в клиенте GitHub для Windows) и Netflix.
Пол Беттс (Paul Betts), разработчик GitHub, известный своим вкладом в интеграцию сервиса с Windows, отмечает, что команда GitHub даже создала ReactiveUI - технологию разработки пользовательских интерфейсов на базе Reactive Extensionsю. Технология также портирована на MacOS X под именем ReactiveCocoa.
Открытый код Reactive Extensions в настоящий момент включает в себя Rx.NET - библиотеку для приложений .NET, RxJS для JavaScript и Rx++ для нативных приложений на C++. Кроме того, код включает в себя Ix (Interactive Extensions) - расширение фреймворка для работы с нативными объектами. Microsoft также предоставила набор обучающих образцов кода, демонстрирующих использование LINQ для событий (Tx) и LINQ2Charts.
Известно, что команда разработчиков Microsoft, трудящаяся над фреймворком, будет переведена в MS Open Tech Hub - одно из подразделений по разработке открытого ПО. Группа программистов намерена дальше развивать фреймворк и сотрудничать с сообществами, которые пожелают использовать его в своих проектах.
Код проекта доступен на rx.codeplex.com под лицензией Apache 2.0. В скором времени на сайте будут доступны обучающие видеоматериалы и техническая документация.