Что такое событийно-ориентированное программирование

Практически весь текст я утащила с википедии, но только лишь потому, что описание там отличное и мне хотелось бы его иметь здесь, в подборке планируемых публикаций о POE и AnyEvent.

Событийно-ориентированное программирование (event-driven programming) - это парадигма программирования, в которой выполнение программы определяется событиями — действиями пользователя (клавиатура, мышь), сообщениями других программ и потоков, событиями операционной системы (например, поступлением сетевого пакета).

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

Событийно-ориентированное программирование, как правило, применяется в трех случаях:

  1. при построении пользовательских интерфейсов (в том числе графических);
  2. при создании серверных приложений в случае, если по тем или иным причинам нежелательно порождение обслуживающих процессов;
  3. при программировании игр, в которых осуществляется управление множеством объектов.

Применение в серверных приложениях

Событийно-ориентированное программирование применяется в серверных приложениях для решения проблемы масштабирования на 10000 одновременных соединений и более.

В серверах, построенных по модели «один поток на соединение», проблемы с масштабируемостью возникают по следующим причинам:

  • слишком велики накладные расходы на структуры данных операционной системы, необходимые для описания одной задачи
    (сегмент состояния задачи, стек);
  • слишком велики накладные расходы на переключение контекстов.

Пример реализации: веб-сервера nginx и lighttpd.

Perl и событийно-ориентированное программирование

Perl является языком программирования, который наиболее полным образом поддерживает принципы событийно-ориентированного программирования. Наиболее популярные perl-фреймворки для создания приложений в стиле СОП: POE и AnyEvent.

Полезные ссылки

ru.wikipedia.org: Событийно-ориентированное программирование