Внешние компоненты по технологии 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 18 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 506 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 289 15.10.21 16:42 Сейчас в теме
Можно попробовать поместить во временное хранилище
Но вообще на сервере не положено хранить данные сеанса, только на клиенте
Вопрос что за библиотека (от чего защита), может и стоит ее инициализировать на клиенте. Тогда можно будет хранить в глобальной переменной модуля приложения
8. lnnd 16 15.10.21 16:46 Сейчас в теме
(7) Временное хранилище тоже не вариант - возвращается ошибка
9. starik-2005 3031 15.10.21 17:23 Сейчас в теме
(8)
тоже не вариант
Кулхацкеры туда не саму компоненту пихают, а структуру, в поле которой эта компонента. Было время - прокатывало. Не знаю, как сейчас...
14. Dem0 18 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 18 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 18 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с считается постоянно глючным и его лечение - пересоздание.
При пересоздании подключения вк ,ВИД , и тд. не пересоздаются а теряются.
Да и общая концепция без глобальных переменных этому противоречит.
Оставьте свое сообщение
Вакансии
Программист 1С
Казань
зарплата от 150 000 руб.
Полный день

Программист 1С:ERP
Москва
зарплата от 100 000 руб.
Полный день

Разработчик 1С
Москва
зарплата от 200 000 руб. до 300 000 руб.
Полный день

Программист 1С (удаленно)
Самара
зарплата от 230 000 руб. до 230 000 руб.
Полный день

Руководитель группы разработки 1С
Москва
зарплата от 250 000 руб. до 250 000 руб.
Полный день