Согласно записи в блоге Interoperability@Microsoft на MSDN, компания Microsoft Open Technologies открыла исходный код программной модели Reactive Extensions (Rx). Данная модель особенно полезна при разработке облачных приложений, поскольку она предлагает единый интерфейс для обработки потоков данных из различных источников, таких как данные о котировке акций, сообщения с Twitter, события внутри самой компьютерной системы и запросы, обрабатываемые веб-сервисами. Об этом написали в своем совместном сообщении в блоге архитектор ПО компании Microsoft Эрик Майер и главный программный менеджер компании MS Open Tech Клаудио Кальдато.

Разработчиком программной модели Rx является Эрик Майер — признанный исследователь и разработчик ПО в Microsoft, создавший там несколько технологий. Он же продолжает играть лидирующую роль в эволюции технологии Rx. Команда создателей Rx будет теперь работать в рамках MS Open Tech Hub — инженерной программы по ускорению открытой разработки проектов и сотрудничеству с сообществами разработчиков, занимающихся системами на базе открытых исходных кодов.

Исходный код Rx будет размещен на сайте открытых проектов CodePlex компании Microsoft с целью расширения сообщества разработчиков, нацеленных на создание более унифицированного программного интерфейса, который мог бы быть использован сразу в нескольких языках программирования. В Microsoft надеются, что открытие исходных кодов технологии Rx должно увеличить количество проектов и отдельных приложений, использующих эту технологию, что позволит достичь лучшего взаимодействия между устройствами и облачной инфраструктурой, где размещаются Rx-приложения.

“Имеются приложения, которыми многие пользуются и которые, на самом деле, используют внутри себя технологию Rx”, — написал в посте Клаудио Кальдато. “Отличным примером здесь является web-сервис для хостинга открытых проектов GitHub for Windows”, — отметил он.

“В GitHub for Windows, технология Rx используется для решения почти всех задач, включая обработку запросов, поступающих из сети, событий, возникающих в связи с действиями над пользовательским интерфейсом, и управление дочерними процессами (git.exe)”, — отметил Пол Беттс, .NET-разработчик в проекте GitHub, высказывание которого было процитировано в блоге. “С помощью Rx и ReactiveUI, мы написали быстродействующее, почти на 100% асинхронное, быстро реагирующее приложение, одновременно имея для него на 100% детерминированные надежные модульные тесты. Технология Rx стала настолько популярной среди разработчиков десктопных приложений на GitHub, что собственную версию Rx и ReactiveUI создала команда разработчиков программ для компьютеров Mac, назвав ее ReactiveCocoa. И теперь она используется на этих компьютерах, давая те же преимущества, что и оригинальная разработка”, — пояснил он.

В блоге были также процитированы слова Скотта Вайнштейна, руководителя подразделения компании L49: “Модель программирования Rx стала ключевой технологией во многих наших проектах. Предоставляя универсальную форму доступа к данным, она дает возможность использовать одни и те же преобразования, выраженные на языке LINQ, ко всем типам данных, включая события, генерируемые при перемещении мышки по компонентам графического интерфейса пользователя, ретроспективные данные о продажах или потоковые данные, поступающие через веб-сервис. А с помощью LINQ-операторов, в которых, в частности, реализовано абстрактное понятие времени, очень легко программировать и тестировать приложения со сложной логикой поведения”.

Джафар Хусейн, старший разработчик ПО компании Netflix, добавил: “Система Rx значительно упростила наш технологический процесс и предоставила новые возможности для повышения быстродействия наших приложений. Ее высокие гибкость и качество позволили нам применить ее в качестве основы для разработки нашей новой платформы для доступа к данным. На сегодняшний день, в наших клиентских приложениях мы используем JavaScript- и .NET-версии технологии Rx, но эта технология требует обучения ей новых членов нашей команды”.

На сайте CodePlex система Rx представлена в виде нескольких библиотек:

  • Rx.NET: библиотека для построения асинхронных и ориентированных на обработку событий программ, которые используют “наблюдаемые последовательности” (observable sequences) — особый тип данных в Rx, и LINQ-запросы;
  • RxJS: аналогичная библиотека для использования в JavaScript-программах, работающих как под браузером, так и под сервером Node.js;
  • Rx++: та же самая библиотека, но для использования в программах на C и C++.