Внешние компоненты по технологии Native

1. lnnd 16 15.10.21 15:15 Сейчас в теме +6 $m
Есть внешняя компонента (выполнена по технологии Native).
Инициализация компоненты происходит долго, по этому возникла необходимость инициализировать её один раз и хранить где либо в контексте сервера. Что б она была доступна постоянно.

Общий модуль с включенным повторным использованием не подходит (там значение максимум 20 мин. хранится).
Параметры сеанса так же не подходят, появляется ошибка при попытке записи в параметры. (кстати с COM-компонентой такой ошибки нет).

P.S. Это библиотеки крипто-защиты. Они инициализируются долго и доступ к ним закрыт (dll на С++) - нет возможности их оптимизировать
По теме из базы знаний
Вознаграждение за ответ
Показать полностью
Найденные решения
12. neos_11 15.10.21 19:13 Сейчас в теме +1 $m
Есть идеи конечно для теста...
1. Подключить обработчик ожидания. Опрашивать или перекидывать то в одну переменную, то в другую
2. Сделать COM-подключение, присвоить переменной и вызвать оттуда
3. Сделать какой-нибудь HTTP-сервис, пусть сама к себе стукается и получает данные

Но в целом, я думаю, нужно узнать что делает внешняя компонента. Для каких целей служит?
13. Dem0 15.10.21 22:01 Сейчас в теме +1 $m
Я тоже не понимаю, почему нельзя на клиенте ее хранить.
Серверу она нафиг? Клиент начинает работу - пусть в нем инициализируется эта длл-ка.
Вон только сегодня смотрел: при начале работы системы компонента в глобальную переменную засовывается
("простые звонки", не к ночи будь упомянуты..).
Короче больше голосов за клиент!

Кстати интересный вариант предложил коллега в (3) МихаилМ.
Вот бы развернуть простенький http-сервис (внутри сети) и запросом обращаться к методам этой длл.
Хотя наверное подвисать будет каждый запрос.. Хотя если эта лайтовая база с DLL-кой и простенькой обвязкой на 1с будет в рам-диске вертется - может пошустрее выйдет (*)_0
15. neos_11 15.10.21 23:08 Сейчас в теме +1 $m
(13) Ну мы пока не знаем что делает компонента и принцип почему она долго работает. Но нам же никто не мешает в конфе прикрутить HTTP сервис самой базы, и туда обращаться за данными, так же не мешает держать соединение открытым.
Плюс нам никто не запрещает держать COM-соединение открытым. Если подтормаживает обращение, сделать через фоновое задание получение данных(длительные операции)
19. МихаилМ 16.10.21 00:16 Сейчас в теме +1 $m
(4) контекст сервера у фирмы 1с считается постоянно глючным и его лечение - пересоздание.
При пересоздании подключения вк ,ВИД , и тд. не пересоздаются а теряются.
Да и общая концепция без глобальных переменных этому противоречит.
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
18. DJ_Codebase 15.10.21 23:40 Сейчас в теме
(1) может какую-нибудь другую компоненту возможно использовать? что за криптозащита? шифрование? проблема понятна, чуточку больше бы вводных данных...
2. neos_11 15.10.21 15:38 Сейчас в теме
Глобальная переменная не подходит в модуле приложения? Инициализация через фоновое задание? Бесконечное фоновое задание?
3. МихаилМ 15.10.21 15:50 Сейчас в теме
перепишите компоненту и вызывайте из веб сервиса. или для вызова из веб напишите прокси -приложение
4. neos_11 15.10.21 16:00 Сейчас в теме
А почему в контексте сервера хранить?
5. lnnd 16 15.10.21 16:01 Сейчас в теме
6. sivin-alexey 507 15.10.21 16:13 Сейчас в теме
1. Сохранить объект внешней компоненты на сервере между вызовами не получиться.
2. Правильнее хранить на клиенте (в глобальной переменной модуля приложения), инициализировать один раз для каждого сеанса
shiaju; Dem0; neos_11; METAL; +4 Ответить
11. neos_11 15.10.21 19:09 Сейчас в теме
(6) Вот я ему об это м и говорю в ответе) Не сможет сохранить данные между вызовами.
7. dabu-dabu 291 15.10.21 16:42 Сейчас в теме
Можно попробовать поместить во временное хранилище
Но вообще на сервере не положено хранить данные сеанса, только на клиенте
Вопрос что за библиотека (от чего защита), может и стоит ее инициализировать на клиенте. Тогда можно будет хранить в глобальной переменной модуля приложения
8. lnnd 16 15.10.21 16:46 Сейчас в теме
(7) Временное хранилище тоже не вариант - возвращается ошибка
9. starik-2005 3036 15.10.21 17:23 Сейчас в теме
(8)
тоже не вариант
Кулхацкеры туда не саму компоненту пихают, а структуру, в поле которой эта компонента. Было время - прокатывало. Не знаю, как сейчас...
14. Dem0 15.10.21 22:03 Сейчас в теме
(9)
не саму компоненту пихают, а структуру, в поле которой эта компонента

Как я в детстве делал: ТЗ на клиенте нельзя а я думал, что если ТЗ засунуть в массив или структуру то прокатит. Не прокатило =)
17. DJ_Codebase 15.10.21 23:24 Сейчас в теме
(14)
ТЗ на клиенте нельзя а я думал, что если ТЗ засунуть в массив или структуру то прокатит

Тут же речь шла про временное хранилище, а не про клиента. На клиенте понятное дело ТЗ недоступно ни в каком виде
16. DJ_Codebase 15.10.21 23:15 Сейчас в теме
(9) Не получится. Там элементы структуры тоже проверяются на возможность сериализации. Я как то хотел в параметре сеанса хранить фикс. соответствие, одним из элементов которого была структура с простыми типами. Так даже это не прокатило((
20. Dem0 16.10.21 09:23 Сейчас в теме
(16)
Ну был наивен, как пряник =)
10. neos_11 15.10.21 19:08 Сейчас в теме
Во временном не получиться хранить. Между вызовами сервера будет теряться. Я пока не понимаю, почему внешнюю компоненту нельзя хранить на клиенте? Зачем её и для каких целей нужно хранить именно на сервере?
12. neos_11 15.10.21 19:13 Сейчас в теме +1 $m
Есть идеи конечно для теста...
1. Подключить обработчик ожидания. Опрашивать или перекидывать то в одну переменную, то в другую
2. Сделать COM-подключение, присвоить переменной и вызвать оттуда
3. Сделать какой-нибудь HTTP-сервис, пусть сама к себе стукается и получает данные

Но в целом, я думаю, нужно узнать что делает внешняя компонента. Для каких целей служит?
13. Dem0 15.10.21 22:01 Сейчас в теме +1 $m
Я тоже не понимаю, почему нельзя на клиенте ее хранить.
Серверу она нафиг? Клиент начинает работу - пусть в нем инициализируется эта длл-ка.
Вон только сегодня смотрел: при начале работы системы компонента в глобальную переменную засовывается
("простые звонки", не к ночи будь упомянуты..).
Короче больше голосов за клиент!

Кстати интересный вариант предложил коллега в (3) МихаилМ.
Вот бы развернуть простенький http-сервис (внутри сети) и запросом обращаться к методам этой длл.
Хотя наверное подвисать будет каждый запрос.. Хотя если эта лайтовая база с DLL-кой и простенькой обвязкой на 1с будет в рам-диске вертется - может пошустрее выйдет (*)_0
15. neos_11 15.10.21 23:08 Сейчас в теме +1 $m
(13) Ну мы пока не знаем что делает компонента и принцип почему она долго работает. Но нам же никто не мешает в конфе прикрутить HTTP сервис самой базы, и туда обращаться за данными, так же не мешает держать соединение открытым.
Плюс нам никто не запрещает держать COM-соединение открытым. Если подтормаживает обращение, сделать через фоновое задание получение данных(длительные операции)
19. МихаилМ 16.10.21 00:16 Сейчас в теме +1 $m
(4) контекст сервера у фирмы 1с считается постоянно глючным и его лечение - пересоздание.
При пересоздании подключения вк ,ВИД , и тд. не пересоздаются а теряются.
Да и общая концепция без глобальных переменных этому противоречит.
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот