Создание плагинов к NiteServer |
|
Некоторые организации желают доработать программу в соответствии со своими требованиями. Чаще всего это изменение механизма входа (например, синхронизация с существующей базой данных сотрудников). Поэтому был разработан механизм расширения функционала через подключение модулей. Рисунок 1 – Внутренняя структура программы NiteServer Модули представляют собой обычную библиотеку dll, экспортирующую единственную функцию GetModule, возвращающую нетипизированный указатель. При запуске сервер тестирования NiteServer производит поиск библиотек в папке для модулей и при нахождении функции GetModule в библиотеке вызывает ее. В свою очередь при вызове этой функции модуль должен возвратить указатель на объект, реализующий интерфейс IModule. Назначение методов интерфейса IModule: Install – метод вызывается единожды при первой загрузке модуля; StartService – вызывается при запуске службы NiteServer; StopService – вызывается при остановке службы NiteServer; SetInterfaces – передача модулю ссылки на главный интерфейс для возможности взаимодействия с ядром; QueryBefore – метод вызывается при запросе пользователем какой либо html страницы; UserConnecting, UserConnected – вызывается при авторизации пользователя на сервере; ModuleSetValue, ModuleGetValue, ModuleItem, ModuleCount – методы для межмодульного взаимодействия.
Следует учесть, что методы класса, реализующего интерфейс IModule, должны быть потокобезопасными. Для взаимодействия с ядром передается указатель на объект интерфейса IMainService, с помощью которого можно получить другие разнообразные объекты ядра: Config – настройки сервера NiteServer; PluginList – список подключенных модулей; LanguageList – список всех доступных языков; UserList – список активных пользователей; PrivilegeList – список возможных прав пользователей; TemplateList – список html шаблонов; JavaScript – библиотека JavaScript классов.
Эти объекты являются частью ядра и не требуют создания. |