digital-garden/_inbox/Событийно-ориентированное программирование.md

37 lines
3.7 KiB
Markdown
Raw Normal View History

2024-06-13 21:01:37 +03:00
---
aliases:
- event-driven
tags:
- зрелость/🌱
date:
- - 2024-03-19
zero-link:
- "[[00 Архитектура ПО]]"
parents:
linked:
---
2024-07-31 13:47:32 +03:00
Событийно-ориентированное программирование — это парадигма программирования, в которой [поток](Поток%20процесса%20ОС.md) программы определяется асинхронными событиями, такими как действия пользователя, сообщения от других программ или внешних устройств. В этом подходе основное внимание уделяется обработке событий.
2024-06-13 21:01:37 +03:00
Эта парадигма часто используется в разработке пользовательских интерфейсов, системах реального времени, а также в областях, где программы должны реагировать на внешние сигналы.
Ключевыми элементами событийно-ориентированного программирования являются:
1. **События (Events):** Это действия или происшествия, которые происходят в системе или программе, например, нажатие кнопки на пользовательском интерфейсе или публикация кафка-сообщения сервисом в кафку
2. **Обработчики событий (Event Handlers):** Это части кода, которые "слушают" определенные события и выполняются, когда эти события происходят. Обработчик события может быть функцией или методом или отдельным сервисом, который вызывается в ответ на событие.
3. **Цикл обработки событий (Event Loop):** Во многих событийно-ориентированных системах существует цикл событий, который постоянно ожидает поступления новых событий и направляет их соответствующим обработчикам.
2024-07-22 15:05:02 +03:00
4. **Очередь событий (Event Queue):** В системах с высокой нагрузкой или когда события могут возникать одновременно, события могут быть помещены в очередь для последовательной обработки.
2024-07-22 15:10:02 +03:00
**Какие задачи хорошо решает такая архитектура:**
- Запросы для которых не нужна мгновенная реакция. Например, загрузка и парсинг большого XML файла.
2024-07-31 13:47:32 +03:00
**Основные компоненты архитектуры:**
- [Брокер сообщений](Брокер%20сообщений.md).
2024-07-31 13:53:33 +03:00
**Преимущества:**
- Компоненты изолированы и позволяют делать доработку каждого без влияния на остальные части системы
- Простота развертывания
- Высокая производительность. Позволяет выполнять параллельные асинхронные операции.
- Хорошо масштабируется
**Недостатки:**
- Сложно тестировать
- Сложно развивать из-за ярко выраженной ассинхронности