ParaService для параллельных задач
Материал из биософт-м
! | Данная информация предназначена только только для IT-специалистов по системной интеграции модулей БИОСОФТ-М. (см. Руководства пользователя к программным продуктам) |
Задача: реализация возможности запуска единственного глобального экземпляра Islib-процесса с целю выполнения им вспомогательных функций по требованию основных процессов в параллельном режиме, с автоматической (пере-)загрузкой, отслеживанием единственности и автоматической выгрузкой по мере исчезновения потребности в предоставляемых им сервисных функциях.
Особенности ParaService
- может быть реализован тем же exe из которого запущено приложение или отдельным;
- строго только один экземпляр процесса парасервиса с данным ID;
- автоматическая терминация и перезапуск при зависании или неожиданном прерывании;
- отслеживание клиентов и автоматическая выгрузка при детекции выгрузки их ВСЕХ или отказа ими от функций парасервиса;
- коммуникация с клиентами через Безопасная посылка данных процессам через Interproc-Post
- отладка: обычный запуск из под отладчика с указанием /ParaService:Name в command line;
- UI в основном только для отладки (если конечно выдача аварийного UI от имени клиента не является функцией сервиса);
- конфиг: обеспечивается клиентскими приложениями, сервису не рекомендуется хранить его самостоятельно;
- конфликтов версий нет и несколько парасервисов разных версий может быть запущено одновременно для приложений разных версий если приняты (тривиальные) меры к изменению их идентификаторов;
- пользователю не доступно естественно никакого управления парасервисами и они ничего не знают и не видят кроме обычных процессов, терминация которых приводит к их автоматическому перезапуску;
- инсталляция: не требуется, в интегрированной инсталляции не участвует;
Применимость
Задача касается только проблем запуска Islib процессов Islib процессами. Запуск чужих или не-Islib приложений тут не рассматривается.
За низкоуровневым интерфесом простого запуска и ослеживания обычных процессов см. Запуск и выгрузка параллельных процессов
Приложения к прикладным приложениям
Примеры применения из текущих задач в порядке приоритета:
1) Запуск параллельной анимации стимула для Stabip.
2) Параллельный процесс опроса приборов, особенно Ucom HID.
3) Замена не надежных хаков в процедура старта и выгрузки Paradop.
4) Обеспечение иных задач паралельными сервисами
--- параллельная сетевая коммуникация (сайт/БД)
--- отслеживатели зависания (WDT)
--- таймаутные прогресс индикаторы
--- безопасные UI ask боксов блокирующих основной процесс
--- возможно что окно лицензий со временем надо сделать параллельным для блокировки отрисовки окон.
Требования
Решение типовых системных проблем
- Опция гарантии запуска только одной копии процесса.
- Гарантия запуска по одной копии процесса для кажого заданного контекста.
- Отслеживание зависания процесса.
- Возможность принудительной терминации процесса в том числе при детекции его зависания.
- Отслеживание клиентов процесса
-- опции автоматического завершения процесса при заверщении всех клиентов его контекста(ов)
- Опция автоматического рестарта зависшего или неожиданно завершившегося процесса.
Простой интерфейс инкапсулятора
- Клиент может совмещать посылку процессу команд с автоматическим его запуском по мере необходимости.
- Один клиентский процесс может иметь несколько независимых контекстов связи с параллельным процессом.
- Запущенный процесс может принимать свои параметры точно так же как и Post-команды.
Проблемы использования Islib с параллельными процессами
- Нужна опция блокирования доступа к файлу конфига сервисной копией текущего процесса не требующего конфиг.
- В перспективе может понадобится возможность синхронной перезагрузки конфига паралельными экземплярами одного и того же приложения.
Системная природа модуля
Не путать с Windows-сервисами которые решают сходную задачу но делают это отвратно, страдая проблемами инсталляции, безопасности, отслеживания клиентов, убогостью коммуникации, независимости версий, гимором отладки, доступностью блокировки пользователем и его crapware фаерволами и не возможностью иметь UI вообще (даже для отладки).
Islib ParaService представляет собой в целом обычное Islib-приложение но запущенное в специальном режиме, предназначенном не для самостоятельной работы с созданием главного окна а только для обслуживания потребностей других клиентских приложением с минимальным рудиментарным UI или вообще без такового.
Руководство по применению
см
Применение ParaService на практических примерах
и альтернативный низкоуровневый интерфейс Запуск и выгрузка параллельных процессов