![]() |
|
Кэширование соединений с веб-сервером | ☑ | ||
---|---|---|---|---|
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 |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |