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 Programmer Guide

     Применение ParaService на практических примерах

  и альтернативный низкоуровневый интерфейс    Запуск и выгрузка параллельных процессов