В одной нашей системе используется событийная модель. События возникают при:
- запуске, останове или иных изменениях состояния приложения/сервиса;
- запуске, останове и завершении каждого этапа бизнес-процессов;
- исключениях;
- приходе данных из внешних систем;
- действиях пользователей или поступлении запросов к внешнему API;
- и т.п.
На события подписываются несколько наблюдателей: логгеры (журналирование в файл/БД/system event log), агент системы мониторинга (контролирует работоспособность системы), контроль состояния бизнес-процессов и другие. Каждый наблюдатель реагирует на свой набор событий, состав которых определяется настройками. Например, в файл логируются все события, а в event log - только критические ошибки и важные события. Наблюдателей можно отключать (например, можно отключить отсылку уведомлений на почту администраторам или в систему мониторинга), настраивать (менять размещение и название файла журнала, например) и т.д.
В другой системе наблюдатель обеспечивал реакцию на приход данных по последовательному порту компьютера. Если данные появлялись, обеспечивался их приём и обработка.