Статус: Эксперт
Группы: Участники
Зарегистрирован: 05.03.2015(UTC) Сообщений: 1,602 Откуда: Иркутская область Сказал(а) «Спасибо»: 110 раз Поблагодарили: 394 раз в 366 постах
|
Добрый день. Что-то все как-то наоборот, Linux сервер клиент, а Windows 10 сервер? С api такое расположение будет немного сложно в том плане, что Windows 10 клиентская операционная система и количество подключений к ней ограничено. На практике если развернуть на Windows веб-сервер, то один клиент в браузере с ним будет работать прекрасно, но вот несколько человек уже будут получать отказы. Конечно одиночное соединение REST API нагружает несколько меньше чем параллельные соединения браузера, но все же массовости так не получится. Более перспективен вариант как порекомендовали выше. С поправкой на http - все же эпоха веб, кому нужны проблемы с межплатформенными SMB общими папками? Логически можно сделать чтобы был один сервер и 2 клиента: один клиент запрашивает подписание, второй клиент выполняет подписание, сервер их соединяет и выполняет проверку прав доступа. Допустим, развернуть http сервер на Linux, куда некое ПО (клиент 1) от Linux может обратиться к http API и положить документ в очередь, указать сертификат (по отпечатку сертификата). В то же время на Windows 10 поставить в автозагрузку/планировщик некий клиент 2 (скрипт для WSH или PowerShell), который будет скачивать список очереди (ссылки на файлы с указанными отпечатками сертификатов). Если сертификат по отпечатку найден, то скачивать документ, рапортовать статус "в процессе подписания", подписывать, загружать подпись/подписанный документ (с автоотметкой "готово"). Если сертификат не найден, то сообщать об этом через http API. Соответственно через некоторое время клиент 1 может снова обратиться к серверу и получить либо ссылку на подпись/подписанный документ и скачать его либо статус "в очереди"/"в процессе подписания" либо отказ "не найден сертификат". Так исключается прямое, в том числе множественное, обращение к Windows 10 и соответственно не нарушаются ограничения по подключениям. Остается придумать как "пинать" клиент2, если документ завис. Например, можно возвращать документ в очередь на подписание, если некий таймаут (относительно размера файла) и ждать перезапуска клиента 2 планировщиком. Правда, есть шанс что ждать придется долго (постоянно включенная Десятка может внезапно начать ставить обновления). Мониторить папку немного сложно: можно пересканировать, но никто не поручится записался ли файл на этот момент целиком. Придется городить вычисление хэшей на сервере. Да, на Windows есть функции автоуведомления, что файл изменился/появился в папке, вот только работает она несколько своеобразно: сначала посылается уведомление что появилось имя файла (содержимого файла еще нет, размер 0 байт), потом что изменилось время, изменился размер (вот тут фактически файл может уже иметь данные, "но это не точно" что все данные уже приняты, возможно будут еще увеличения размера). Отредактировано пользователем 24 сентября 2021 г. 10:37:37(UTC)
| Причина: Не указана
|
1 пользователь поблагодарил two_oceans за этот пост.
|
|