Внешние компоненты по технологии Native
Есть внешняя компонента (выполнена по технологии Native).
Инициализация компоненты происходит долго, по этому возникла необходимость инициализировать её один раз и хранить где либо в контексте сервера. Что б она была доступна постоянно.
Общий модуль с включенным повторным использованием не подходит (там значение максимум 20 мин. хранится).
Параметры сеанса так же не подходят, появляется ошибка при попытке записи в параметры. (кстати с COM-компонентой такой ошибки нет).
P.S. Это библиотеки крипто-защиты. Они инициализируются долго и доступ к ним закрыт (dll на С++) - нет возможности их оптимизировать
Инициализация компоненты происходит долго, по этому возникла необходимость инициализировать её один раз и хранить где либо в контексте сервера. Что б она была доступна постоянно.
Общий модуль с включенным повторным использованием не подходит (там значение максимум 20 мин. хранится).
Параметры сеанса так же не подходят, появляется ошибка при попытке записи в параметры. (кстати с COM-компонентой такой ошибки нет).
P.S. Это библиотеки крипто-защиты. Они инициализируются долго и доступ к ним закрыт (dll на С++) - нет возможности их оптимизировать
По теме из базы знаний
- Создание внешних компонент 1С по технологии NativeAPI на языке Eiffel
- ЭЦП по гостам Украины в 1С - Внешняя компонента BilboSign.dll
- Разработка внешних компонент на ассемблере goAsm
- Пишем внешнюю компоненту для 1С, NativeAPI на С++, для ОС Linux, с использованием Qt Creator
- Разработка внешней компоненты по технологии Native API. Мониторинг файловой системы в 1С
Найденные решения
Есть идеи конечно для теста...
1. Подключить обработчик ожидания. Опрашивать или перекидывать то в одну переменную, то в другую
2. Сделать COM-подключение, присвоить переменной и вызвать оттуда
3. Сделать какой-нибудь HTTP-сервис, пусть сама к себе стукается и получает данные
Но в целом, я думаю, нужно узнать что делает внешняя компонента. Для каких целей служит?
1. Подключить обработчик ожидания. Опрашивать или перекидывать то в одну переменную, то в другую
2. Сделать COM-подключение, присвоить переменной и вызвать оттуда
3. Сделать какой-нибудь HTTP-сервис, пусть сама к себе стукается и получает данные
Но в целом, я думаю, нужно узнать что делает внешняя компонента. Для каких целей служит?
Я тоже не понимаю, почему нельзя на клиенте ее хранить.
Серверу она нафиг? Клиент начинает работу - пусть в нем инициализируется эта длл-ка.
Вон только сегодня смотрел: при начале работы системы компонента в глобальную переменную засовывается
("простые звонки", не к ночи будь упомянуты..).
Короче больше голосов за клиент!
Кстати интересный вариант предложил коллега в (3) МихаилМ.
Вот бы развернуть простенький http-сервис (внутри сети) и запросом обращаться к методам этой длл.
Хотя наверное подвисать будет каждый запрос.. Хотя если эта лайтовая база с DLL-кой и простенькой обвязкой на 1с будет в рам-диске вертется - может пошустрее выйдет (*)_0
Серверу она нафиг? Клиент начинает работу - пусть в нем инициализируется эта длл-ка.
Вон только сегодня смотрел: при начале работы системы компонента в глобальную переменную засовывается
("простые звонки", не к ночи будь упомянуты..).
Короче больше голосов за клиент!
Кстати интересный вариант предложил коллега в (3) МихаилМ.
Вот бы развернуть простенький http-сервис (внутри сети) и запросом обращаться к методам этой длл.
Хотя наверное подвисать будет каждый запрос.. Хотя если эта лайтовая база с DLL-кой и простенькой обвязкой на 1с будет в рам-диске вертется - может пошустрее выйдет (*)_0
(13) Ну мы пока не знаем что делает компонента и принцип почему она долго работает. Но нам же никто не мешает в конфе прикрутить HTTP сервис самой базы, и туда обращаться за данными, так же не мешает держать соединение открытым.
Плюс нам никто не запрещает держать COM-соединение открытым. Если подтормаживает обращение, сделать через фоновое задание получение данных(длительные операции)
Плюс нам никто не запрещает держать COM-соединение открытым. Если подтормаживает обращение, сделать через фоновое задание получение данных(длительные операции)
Остальные ответы
В избранное
Подписаться на ответы
Сортировка:
Древо развёрнутое
Свернуть все
1. Сохранить объект внешней компоненты на сервере между вызовами не получиться.
2. Правильнее хранить на клиенте (в глобальной переменной модуля приложения), инициализировать один раз для каждого сеанса
2. Правильнее хранить на клиенте (в глобальной переменной модуля приложения), инициализировать один раз для каждого сеанса
Можно попробовать поместить во временное хранилище
Но вообще на сервере не положено хранить данные сеанса, только на клиенте
Вопрос что за библиотека (от чего защита), может и стоит ее инициализировать на клиенте. Тогда можно будет хранить в глобальной переменной модуля приложения
Но вообще на сервере не положено хранить данные сеанса, только на клиенте
Вопрос что за библиотека (от чего защита), может и стоит ее инициализировать на клиенте. Тогда можно будет хранить в глобальной переменной модуля приложения
Есть идеи конечно для теста...
1. Подключить обработчик ожидания. Опрашивать или перекидывать то в одну переменную, то в другую
2. Сделать COM-подключение, присвоить переменной и вызвать оттуда
3. Сделать какой-нибудь HTTP-сервис, пусть сама к себе стукается и получает данные
Но в целом, я думаю, нужно узнать что делает внешняя компонента. Для каких целей служит?
1. Подключить обработчик ожидания. Опрашивать или перекидывать то в одну переменную, то в другую
2. Сделать COM-подключение, присвоить переменной и вызвать оттуда
3. Сделать какой-нибудь HTTP-сервис, пусть сама к себе стукается и получает данные
Но в целом, я думаю, нужно узнать что делает внешняя компонента. Для каких целей служит?
Я тоже не понимаю, почему нельзя на клиенте ее хранить.
Серверу она нафиг? Клиент начинает работу - пусть в нем инициализируется эта длл-ка.
Вон только сегодня смотрел: при начале работы системы компонента в глобальную переменную засовывается
("простые звонки", не к ночи будь упомянуты..).
Короче больше голосов за клиент!
Кстати интересный вариант предложил коллега в (3) МихаилМ.
Вот бы развернуть простенький http-сервис (внутри сети) и запросом обращаться к методам этой длл.
Хотя наверное подвисать будет каждый запрос.. Хотя если эта лайтовая база с DLL-кой и простенькой обвязкой на 1с будет в рам-диске вертется - может пошустрее выйдет (*)_0
Серверу она нафиг? Клиент начинает работу - пусть в нем инициализируется эта длл-ка.
Вон только сегодня смотрел: при начале работы системы компонента в глобальную переменную засовывается
("простые звонки", не к ночи будь упомянуты..).
Короче больше голосов за клиент!
Кстати интересный вариант предложил коллега в (3) МихаилМ.
Вот бы развернуть простенький http-сервис (внутри сети) и запросом обращаться к методам этой длл.
Хотя наверное подвисать будет каждый запрос.. Хотя если эта лайтовая база с DLL-кой и простенькой обвязкой на 1с будет в рам-диске вертется - может пошустрее выйдет (*)_0
(13) Ну мы пока не знаем что делает компонента и принцип почему она долго работает. Но нам же никто не мешает в конфе прикрутить HTTP сервис самой базы, и туда обращаться за данными, так же не мешает держать соединение открытым.
Плюс нам никто не запрещает держать COM-соединение открытым. Если подтормаживает обращение, сделать через фоновое задание получение данных(длительные операции)
Плюс нам никто не запрещает держать COM-соединение открытым. Если подтормаживает обращение, сделать через фоновое задание получение данных(длительные операции)