Как строить событийную модель для связи разных бинарны приложений?
Добрый день.
Есть приложение на компилируемом языке. Приложение догоживущее, процесс работает в фоне и общается с клиентами через сеть.
Нужно добавить возможность писать для него расширения на скриптовых языках. Мне кажется, что событийная модель тут подошла бы очень хорошо. Скрипт просто подписывается на нужные события и реагирует на них. Желательно, что бы это можно было желать без перезагрузки основного приложения.
Но с компилируемыми приложениями я работал очень мало и слабо представляю, как это реализовать?
Есдинственый вариант, который я вижу, это передавать в приложение пары событие-> адрес скрипта для запуска. Передавать это через прослушиваемый порт. В принципе вариант не плохой, даже позволяет инициировать события с внешней стороны.
У кого есть опыт в подобных вещах, подскажите, это верное нарпавление? Может для этого есть готовые решения?
https://github.com/jeremyong/Selene
Создаете в своем приложении некий статический класс с методами подписки на события и пробрасываете его в lua.
Там делаете нечто в стиле
App:addListener('<событие>', <коллбек>)
Скрипты просто складывать в папочку рядом с приложением. При загрузке выполнять все скрипты из папки.
Я вижу вариант со встраиванием в ваше приложение Питона. Расширение регистрирует обработчики через вызов специальной питоней функции. При возникновении события приложение дергает питоний код, который дергает зарегистрированные обработчики.
Даже более того! Можно использовать специальные имена функций и специфический загрузчик таких расширений. Он сам будет регистрировать функции на основании их имен.