Имя: Пароль:
1C
1С v8
Кэширование соединений с веб-сервером
0 1S_User
 
31.03.15
09:36
Здравствуйте!  

Возникла следующая проблема. В процессе работы необходимо многократно считывать данные через обращение к веб-сервису из сторонней базы.


Каждый раз на проходение этапа.


Определения = Новый WSОпределения


Прокси = Новый WSПрокси


уходит порядка 3 секунд, что неприемлемо, т.к. резко замедляет работу оператора. Данные в базе-источнике меняются постоянно, поэтому выбрать и закэшировать данные заранее невозможно.

Есть ли возможность кэшировать именно соединение более 20 секунд?

Какие еще существуют варианты решениия проблемы?

Использование веб-сервиса возможно как в режиме толстого клиента, так и в тонком клиенте.
1 Лефмихалыч
 
31.03.15
09:38
(0) вариантов-то море:
1. Не обращаться так часто. Просто брать и вот не обращаться
2. Перенести код, который обращается, в кэширующий модуль и тогда это все создаваться не будет, елси в кэше значение есть
2 1S_User
 
31.03.15
09:43
(1) Пока что о варианте 2 и думаю. Конфы не хотелось вскрывать, с которых обращаюсь. Много и разные.
3 Лефмихалыч
 
31.03.15
12:48
(2) можно еще поднять кэширующий веб сервис внутри сети, из которой происходит обращение.
Или наладить поток данных между источником и получателем, чтобы данные, получаемые по ws, хранились в получателе уже сразу и обновлялись по плану обмена.
4 DmitrO
 
31.03.15
12:57
Можно еще предложить перенести создание объекта определений в функцию общего модуля с кешированием на время сеанса, а прокси создавать каждый раз.
Тогда закешится только получение схемы, а данные будут актуальными.
5 Гёдза
 
31.03.15
13:00
проблема в том что удаленный сервер долго стартует, а для этого нужно его периодически опрашивать, что веб сервер не рвал соединения  сбазой
6 Лефмихалыч
 
31.03.15
13:01
(5) отнюдь! Мне видится, что проблема вот в этом: "необходимо многократно считывать данные"
7 Гёдза
 
31.03.15
13:06
(6) по крайней мере я помню ветку на партнерском, о том что первое соединение долго, а потом вроде норм
8 1S_User
 
31.03.15
13:56
(7) Все верно. На партерском написали, что при отсутствии обращений к базе сбрасывается. Планируется этот момент доработать.
Впрочем, меня и быстрое соединение не устраивает. Для меня и пара секунд каждый раз много, т.к. у операторов до моего появления и подключения к сторонней базе для получения дополнительных данных, на всю операцию секунд 5 уходило. Так что только постоянная поддержка соединения.
9 Лефмихалыч
 
31.03.15
14:11
(8) почему отвергаешь вариант хранения данных в ИБ-получателе? Быстрее же ни чего не будет
10 1S_User
 
31.03.15
14:24
(9) Скорее всего, его и буду использовать (если речь идет о хранении данных подключения).  
Думаю о том, как это делать без доработки конфигурации получателя.
В толстом клиенте все просто - сохранить в клиенсткую переменную. А в толстом - без кэшируемого модуля.


************************
Данные же самой базы-источника в получателе надолго сохранить нереально, т.к. необходимо постоянно знать, не пришла ли в источник еще информация из других баз. Тут даже регламентное обновление каждые н минут не поможет. Определенные лимиты, которые нельзя превышать, могут использовать одновременно в разных городах и в базах с разными конфами, скажем так. И если успеют превысить, потому что информация об использовании вовремя не пришла, будет больно.
11 1S_User
 
31.03.15
14:25
А в толстом - без кэшируемого модуля.
В смысле в тонком клиенте, без кэшируемого модуля на сервере.
12 Лефмихалыч
 
31.03.15
14:27
(10) нет, речь идет о хранении данных, которые "необходимо многократно считывать"
13 Лефмихалыч
 
31.03.15
14:29
(10) долго что ли заставить базу-источник самостоятельно инициировать обмен с приемником, когда данные изменились? Так у тебя в приемнике всегда будут актуальные данные И все эти взаимодействия будет инициировать ТОЛЬКО тогда, когда они реально нужны, а не на всякий случай постоянно.
Ты вернешь клиентам те самые 5 секунд, но на этот раз они будут счастливы
14 1S_User
 
31.03.15
14:43
(13) долго что ли заставить базу-источник самостоятельно инициировать обмен с приемником, когда данные изменились?

Пока с трудом представляю, как это сделать. Источник на одном сервере, приемники - на множестве удаленных компов, связь через инет, через вебсервисы.
Как автоматом инициализировать раздачу в приемник так, чтобы приемник не проверял каждый раз?
При этом так, чтобы на приемнике ничего тяжелого не устанавливать. Это даже домашние компы в ряде случаев могут быть.
15 Serginio1
 
31.03.15
14:57
http://forum.infostart.ru/forum86/topic120770/
При каждом вызове метода 1С лезет в УстановкаПараметровСеанса  

http://downloads.v8.1c.ru/content/Platform/8_2_17_128/1cv8upd.htm
При каждом вызове Web-сервиса начинается новый сеанс и вызывается обработчик УстановкаПараметровСеанса().
16 Serginio1
 
31.03.15
14:59
Нужно упростить метод УстановкаПараметровСеанса  

например через ПредставлениеПриложения

http://helpf.pro/faq82/view/1165.html

v8: Web сервис, момент подключения
WSConnection - идентификатор сессии Web-сервиса;
WebServerExtension