Организации работающие в разных сферах независимо друг от друга ищут шаблоны и подходы для создания программного обеспечения, которое выглядит и ведет себя одинаково. Эти системы являются более надежными, более устойчивыми, более гибкими и лучше приспособлены к современным требованиям.
Требования к приложениям резко изменились за последние годы. Всего несколько лет назад большое приложение могло содержать десятки серверов, секунды времени отклика, часы автономного обслуживания и гигабайты данных. Сегодня приложения разворачиваются на всем: от мобильных устройств до облачных кластеров, на которых работают тысячи многоядерных процессоров. Пользователи ожидают миллисекунды времени отклика и сто процентов времени безотказной работы, а данные
измеряются в петабайтах. Вчерашние архитектурные решения, используемые для создания программного обеспечения, просто не удовлетворяют сегодняшним требованиям.
Реактивные системы более гибкие, слабосвязанные и масштабируемые. Это облегчает их разработку и адаптацию к изменениям. Они значительно более терпимы к ошибкам и сбоям, очень отзывчивы и предоставляют пользователям эффективную. интерактивную обратную связь.
Новые требования к приложениям повлекли за собой появление технологий позволяющих разрабатывать реактивные системы. Стали популярными интерфейсы программирования приложений для реактивного программирования такие как ReactiveX [1, 2, 9, 10, 11, 12, 13, 14], использующий наблюдаемые потоки и реализованный под огромное количество языков, такие как C Sharp, Java, JavaScript, C++ и многие другие. Этот и похожие инструменты позволяют представить приложение как набор объектов, обменивающихся между собой данными, и превратить структуру приложения в асинхронный ориентированный граф данных. Однако, текстовое представление не дает прозрачного понимания о взаимодействии объектов в приложении и о её структуре в целом. Визуальные
представление, в свою очередь, позволяют удобно и быстро конфигурировать и изменять графовую структуру приложения. Похожую задачу
решает Windows Presentation Foundation, решение от Microsoft, ориентированная на создание клиентских приложений. Подробнее об этом решении можно почитать на официальном сайте MSDN или в книге Pro WPF
4.5 in C Sharp [4].
В данной работе описывается технология предназначенная для создания реактивных приложений Windows, и предоставляющая визуальный интерфейс, позволяющий создавать элементы реактивной системы для приложений, перетаскивая элементы управления из панели элементов
и устанавливая свойства в окне «Свойства». Также данная технология предоставляет декларативную модель для описание реактивной системы благодаря использованию расширяемого языка разметки для реактивных приложений (XRAML)
• Проведен анализ большого объема реактивных приложений
• Проведен анализ подходов к визуальному программированию, как
к возможному решению проблемы возрастающей сложности поддержки и разработки больших реактивных приложений
• Разработаны прототипы унифицированной модели программирования для создания реактивных приложений
• Разработана итоговая унифицированная модель программирования для создания реактивных приложений, включающая в себя
– Декларативный язык разметки основанный на XML, который
упрощает создание структурного графа реактивного приложения
– Интеграцию с Visual Studio. Основные компоненты интеграции:
∗ Визуальный конструктор
∗ Поддержка расширения файлов
∗ Расширенное выделение синтаксиса, функции завершения кода IntelliSense и интуитивную навигацию по коду в редакторе кода, созданном на основе платформы компилятора .NET («Roslyn»)
∗ Различные спецификации
[1] Duncan K. DeVore, Sean Walsh, Brian Hanafee: Reactive Application
Development (2014)
[2] Lee Campbell: Introduction to Rx: A step by step guide to the Reactive
Extensions to .NET (2012)
[3] Ivan Morgillo, Sasa Sekulic, Fabrizio Chignoli: Grokking ReactiveX,
(2016)
[4] Matthew MacDonald: Pro WPF 4.5 in C Sharp: Windows Presentation
Foundation in .NET 4.5 (2012)
[5] Jonas Bon´er, Co-Founder and CTO Lightbend, Inc.: Reactive
Microservices Architecture (2016)
[6] Markus Eisele, Enterprise Advocate, Lightbend, Inc.: Developing
Reactive Microservices (2016)
[7] Jeff Smith: Reactive Machine Learning Systems (2016)
[8] Julien Richard-Foy: Play Framework Essentials (2014)
[9] Andre Staltz: The introduction to Reactive Programming you’ve been
missing (2014)
[10] The Couchbase documentation: Mastering Observables
[11] Russell Elledge: Reactive Programming in Java 8 With RxJava (2014)
[12] Tomasz Kowalczewski: 33rd Degree Reactive Java (2014)
63[13] Bodil Stokke: What Every Hipster Should Know About Functional
Reactive Programming (2014)
[14] Erik Meijer: Your Mouse is a Database (2012)
[15] McGraw, J.: The VAL Language: Description and Analysis (1982)
[16] Agha, G.: Actors: a Model of Concurrent Computation in Distributed
Systems, Series in Artificial Intelligence (Jun 1985)
[17] Arvind, D.: IEEE Xplore - Dataflow architectures and multithreading.
Annual review of computer science (1986)
[18] Browne, J., Hyder, S., Dongarra, J.: IEEE Xplore - Visual programming
and debugging for parallel computing (1995)
[19] Cann, D.: Retire Fortran? A debate rekindled (1991)
[20] Dennis, J.B.: Data Flow Supercomputers. Computer 13(11), 48-56
(1980)
[21] Feo, J., Cann, D.: A report on the Sisal language project (1990)
[22] Halbwachs, N., Caspi, P., Raymond, P., Pilaud, D.: The synchronous
data flow programming language LUSTRE. Proceedings of the IEEE
79(9), 1305-1320 (Sep 1991)
[23] Johnston, W., Hanna, J.: Advances in dataflow programming languages.
ACM Computing Surveys (CSUR) (2004)
64[24] Kahn, G.: The Semantics of a Simple Language for Parallel
Programming. In Information Processing ґ Proceedings of the IFIP
Congress (1974), pp. 471-475. 74: pp. 471-475 (1974)
[25] McGraw, J.: The VAL Language: Description and Analysis (1982)