Событийная архитектура (event-driven architecture)

В основе событийной архитектуры программирования лежит представление о программе как о наборе объектов, определенным образом реагирующих на различные события. Эти события могут быть и внешними, и внутренними. К внутренним событиям можно отнести те, что используются объектами для связи друг с другом, а внешними являются такие события как нажатие кнопки мыши, сработавший датчик или поступление данных посредством сетевого соединения.


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

Если программа, созданная по принципу событийной архитектуры, представляет собой простой графический пользовательский интерфейс в виде окон с кнопкой «Ок», то эти окна, по сути, и являются объектами-обработчиками, реагирующими на события. Событием же может стать простое нажатие на вышеупомянутую кнопку.


Создана событийная архитектура программирования была еще в 60-х годах прошлого века и применялась поначалу в операционных системах для реализации функций ввода-вывода. Драйвера устройств для ОС такого типа состоят из набора функций и блока переменных состояния устройства. Каждая функция имеет параметры, являющиеся указателями на данный блок переменных. Поэтому такие драйвера могут работать с различными однотипными устройствами, для чего требуется лишь зарегистрировать дополнительные блоки переменных.

Драйвер (объект) в самом простом случае обслуживает два потока событий: те, что исходят от пользовательских программ, и запросы прерывания устройства. В старых (монолитных) ОС драйвера выполняют всего две функции: записи и прерывания, одновременно следя, чтобы они не выполнялись одновременно. Если рассматривать объекты событийной архитектуры на примере более современных ОС, то в них драйвера (объекты-обработчики событий) при работе с блочными и символьными устройствами присваивают запросам определенные коды, согласно которым запросы пользовательских программ «выстраиваются» в очередь.


Самые сложную архитектуру связей объекта и событий имеют драйвера, работающие с множественными событийными потоками, ведь они должны обеспечить одновременное обслуживание нескольких потоков пользовательских запросов, которые работают с одним и тем же устройством.

уникальные шаблоны и модули для dle

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