Программирование, управляемое событиями
В компьютерном программировании событийно -ориентированное программирование — это парадигма программирования , в которой ход выполнения программы определяется внешними событиями . Типичным событием могут быть события пользовательского интерфейса от мышей , клавиатур , сенсорных панелей и сенсорных экранов или входные данные от внешних датчиков , а также быть сгенерированы программно ( передача сообщений ) из других программ или потоков или сетевых событий.
Программирование, управляемое событиями, является доминирующей парадигмой, используемой в приложениях с графическими пользовательскими интерфейсами и сетевых серверах.
В приложении, управляемом событиями, обычно существует цикл событий , который прослушивает события, а затем запускает функцию обратного вызова при обнаружении одного из этих событий.
Программы, управляемые событиями, можно писать на любом языке программирования , хотя эта задача проще в языках, которые предоставляют абстракции высокого уровня .
Хотя они не совсем соответствуют модели, управляемой событиями, обработка прерываний и обработка исключений имеют много общего.
Важно различать парадигмы, управляемые событиями и сообщениями (также называемые управляемыми очередями) : сервисы, управляемые событиями (например, AWS SNS ), отделены от своих потребителей. В то время как сервисы, управляемые очередями/сообщениями (например, AWS SQS ), связаны со своими потребителями. [1]
Цикл событий [ править ]
Поскольку цикл получения/отправки событий является общим для приложений, многие среды программирования заботятся об их реализации и ожидают, что пользователь предоставит только код для обработчиков событий.
RPG , ранний язык программирования от IBM , чья концепция дизайна 1960-х годов была похожа на программирование, управляемое событиями, обсуждавшееся выше, обеспечивал встроенный основной цикл ввода-вывода (известный как «программный цикл»), в котором вычисления выполнялись в соответствии с индикаторы ( флаги ), которые были установлены ранее в цикле.
Обработчики событий [ править ]
Фактическая логика содержится в процедурах обработчика событий. Эти процедуры обрабатывают события, на которые будет реагировать основная программа. Например, один щелчок левой кнопкой мыши по командной кнопке в программе с графическим интерфейсом может запустить процедуру, которая откроет другое окно, сохранит данные в базе данных или выйдет из приложения. Многие IDE предоставляют программисту шаблоны событий графического интерфейса, позволяя программисту сосредоточиться на написании кода события.
Хотя отслеживание истории обычно тривиально в последовательной программе. Поскольку обработчики событий выполняются в ответ на внешние события, правильное структурирование обработчиков для работы при вызове в любом порядке может потребовать особого внимания и планирования в программе, управляемой событиями.
Помимо написания обработчиков событий, обработчики событий также необходимо привязать к событиям, чтобы при возникновении события вызывалась правильная функция. Для событий пользовательского интерфейса многие IDE объединяют два шага: двойной щелчок по кнопке, и редактор создает (пустой) обработчик событий, связанный с нажатием кнопки пользователем, и открывает текстовое окно, чтобы вы могли редактировать обработчик событий.
Общее использование [ править ]
Большинство существующих архитектур графического пользовательского интерфейса используют программирование, управляемое событиями. [2] В Windows есть цикл событий . Платформа Java AWT обрабатывает все изменения пользовательского интерфейса в одном потоке, называемом потоком диспетчеризации событий . Аналогично, все обновления пользовательского интерфейса в платформе Java JavaFX происходят в потоке приложения JavaFX. [3]
Большинство сетевых серверов и платформ, таких как Node.js, также управляются событиями. [4]
Обработка прерываний и исключений [ править ]
Этот раздел пуст. Вы можете помочь, добавив к нему . ( май 2024 г. ) |
См. также [ править ]
- Автономная периферийная работа
- Сравнение парадигм программирования
- Программирование потоков данных
- DOM-события
- Событийно-ориентированная архитектура
- Обработка потока событий (аналогичная концепция)
- Язык описания оборудования
- Прерывать
- Инверсия управления
- Промежуточное программное обеспечение, ориентированное на сообщения
- Парадигма программирования
- Шаблон публикации-подписки
- Схема реактора
- Программирование сигналов (аналогичная концепция)
- Поэтапная архитектура, управляемая событиями (SEDA)
- Система с таймером (альтернативная архитектура компьютерных систем)
- Виртуальная синхрония — модель распределенного выполнения для событийно-ориентированного программирования.
Ссылки [ править ]
- ^ Чандрасекаран, Премананд; Кришнан, Картик; Форд, Нил; Байарс, Брэндон; Буйзе, Аллард (2022). Доменно-ориентированное проектирование с использованием Java — Руководство для практикующего . Пакт Паблишинг. ISBN 9781800564763 .
- ^ Самек, Миро (1 апреля 2013 г.). «Кто переместил мое государство?» . Доктор Добб . Проверено 28 января 2018 г.
- ^ Федорцова, Ирина (июнь 2012 г.). «Параллелизм в JavaFX» . Домашняя страница документации JavaFX . Оракул . Проверено 4 января 2018 г.
Граф сцены JavaFX, который представляет графический пользовательский интерфейс приложения JavaFX, не является потокобезопасным, и к нему можно получить доступ и изменить его только из потока пользовательского интерфейса, также известного как поток приложения JavaFX.
- ^ Программирование, управляемое событиями, в Node.js.
Внешние ссылки [ править ]
- Презентация шаблонов параллелизма на Scaleconf
- Программирование, управляемое событиями: введение, руководство, история , учебник Стивена Ферга
- Программирование, управляемое событиями , учебник Алана Голда
- Сотрудничество на мероприятиях , статья Мартина Фаулера
- Переосмысление Swing Threading , статья Джонатана Саймона
- Стиль программирования, управляемый событиями. Архивировано 20 февраля 2005 г. в Wayback Machine , статья Криса Макдональда.
- Программирование, управляемое событиями, с использованием специализации шаблонов , статья Кристофера Диггинса
- Шиффер, С.; Фрелих, Дж. Х. (1994). «Концепции и архитектура Vista — мультипарадигмальной среды программирования». Материалы симпозиума IEEE по визуальным языкам 1994 года . стр. 40–47. дои : 10.1109/VL.1994.363642 . ISBN 0-8186-6660-9 . S2CID 15927869 .
- Программирование, управляемое событиями, и агенты , глава
- Ресурсы LabWindows/CVI
- Распределенная система событий публикации/подписки — пример с открытым исходным кодом, который находится в разработке на MSN.com и Microsoft.com.
- Цикл событий Javascript