![]() |
![]() |
|
Ускорение получения COM объекта | ☑ | ||
---|---|---|---|---|
0
Stepa86
14.06.16
✎
09:42
|
Есть 2 базы. Клиент-сервер, на одном скуле и на одном сервере 1С. 8.3.8.1652. Из первой, почти пустой, подключаюсь через COM ко второй - УПП.
Затраты на подключение - 10 секунд. Есть какие-либо фокусы по ускорению? Счетчик = Счетчик + 1; началоЗамера = ТекущаяУниверсальнаяДатаВМиллисекундах(); соединение = Новый COMObject("V83.COMConnector"); база = соединение.Connect("Srvr=""Server"";Ref=""upp"";Usr = ""Обмен""; Pwd = ""marina"""); затрачено = ТекущаяУниверсальнаяДатаВМиллисекундах() - началоЗамера; Сообщить( "" + Счетчик + "." + ТекущаяДатаСеанса() + ": " + затрачено + "мс" ); Модуль с повторным использованием юзаю. Так же в фоновом задании пробую получить соединение и пробрасываю его в сеанс через временное хранилище, но там в 90% случаев приходит Неопределено. В УПП весь код по инициализации не выполняется. |
|||
1
vde69
14.06.16
✎
09:45
|
COM 1с сделан специально медленным для защиты от всяких программ подбора паролей...
ну и второе - лицензии получаются долго... я специально проверял (правда давно на 8.0), быстрее 4 секунд авторизацию через COM не пройти |
|||
2
Serginio1
14.06.16
✎
09:55
|
(12) Смотри в сторону пула соединений и время жизни
|
|||
3
Зая Бусечка
14.06.16
✎
09:56
|
(2) На 8.3 пул толком не сделать. Ком-объект дохнет на порядок быстрее, чем в 8.2
|
|||
4
NoiseRND
14.06.16
✎
09:59
|
Web-сервисы, как альтернатива, не предлагать?
|
|||
5
Stepa86
14.06.16
✎
10:02
|
(4) Первое подключение через веб-сервис - 2 секунды, что так же не назвать комфортным. Но затраты на разработку через них существенно выше. Так то жду 8.3.9 с пулом и обещанным ускорением в разы.
|
|||
6
Остап Сулейманович
14.06.16
✎
10:07
|
(5) Работайте с КОМ на клиенте. Одно подключение может жить в течении всего сеанса.
|
|||
7
vde69
14.06.16
✎
10:08
|
(5) кстати - не советую пытаться добиться работы с COM работы внутри транзакции 1с... много раз уже осуждали...
по этому мне кажется, что сабж изначально дурной.... вместо попыток синхронизации данных с внешней системой внутри транзакции нужно идти в сторону регистрации изменений и обработку коллизий... |
|||
8
Stepa86
14.06.16
✎
10:10
|
(6) Не вариант. База работает в том числе через веб. Да и дыра в безопасности это
|
|||
9
Остап Сулейманович
14.06.16
✎
10:12
|
(8) Тогда никак не ускориться. Смириться с тем, что есть и пытаться решать задачу другими способами.
|
|||
10
Stepa86
14.06.16
✎
10:13
|
(7) Я понимаю, что лучше делать грамотный обмен с обработкой коллизий и через веб-сервисы, но я не готов ради этой задачи выделять столько ресурсов.
|
|||
11
hhhh
14.06.16
✎
10:18
|
(10) а зачем вы в фоновом задании юзаете? Просто соханяйте соединение это в параметр сеанса. И используйте
|
|||
12
Stepa86
14.06.16
✎
10:23
|
(11) в параметре сеанса в 8.3 не сохранить соединение. Само соединение получается в модуле с повторным использованием на сеанс, поэтому первое подключение занимает 10сек, а остальные мгновенно. Кеш живет 20 минут, вроде б, потом опять происходит подключение.
При старте сеанса запускаю фоновое задание, которое получает соединение и кладет его во временное хранилище, при получении соединения сперва смотрю это временное хранилище и если там лежит валидное подключение, то возвращаю его, если нет, то подключаюсь. Таким образом иногда получается в фоне заполучить соединение и пользователь не замечает тормозов. Но вот почти всегда вместо соединения во временном хранилище лежит неопределено. |
|||
13
vde69
14.06.16
✎
10:24
|
(10) когда-же Вы научитесь адекватно подходить к ресурсам и задачам?
выбрать можно только 2 из 3х: качественно, быстро, дешево раз ресурсов мало - значит "дешево" уже имеем, далее имеем 2 варианта 1. быстро и дешево, но не качественно (это твое через COM и ты смирись с долгим временем подключения) 2. качественно и дёшево но долго - жди готового решения от 1с |
|||
14
Stepa86
14.06.16
✎
10:35
|
(13) я всегда подхожу к задачам прагматично и адекватно. Именно в этой задаче переписывание всего на правильно не принесет никакого эффекта, кроме морального удовлетворения.
|
|||
15
Stepa86
14.06.16
✎
10:40
|
+(13) и я знаю неофициальные правила этого форума, что вопрошаемого нужно обязательно ткнуть носом, что он неправильно подходит к задаче
|
|||
16
Провинциальный 1сник
14.06.16
✎
10:40
|
(12) Сделай один рабочий процесс - Неопределено перестанет восставать из хранилища.
|
|||
17
Провинциальный 1сник
14.06.16
✎
10:42
|
(1) Нет. Сделай пустую конфигурацию - и загрузка через com будет моментальна. Время тратится на чтение рабочей конфигурации и всякие там инициализации. Запрос ключа в исправной сети - доля секунды.
|
|||
18
Stepa86
14.06.16
✎
10:43
|
(16) на тестовой архитектуре он и так один всегда, а на боевой ради этой задачи я не буду трогать настройки
|
|||
19
hhhh
14.06.16
✎
10:44
|
(12) почему нельзя сохранить? например
Адрес = Неопределено; Стр.Обр = ПоместитьВоВременноеХранилище(Новый Структура("Обр", Обр), Адрес); НовХр = Новый ХранилищеЗначения(Хран); ПараметрыСеанса.ОбработчикиБаз = НовХр; нормально сохраняется в параметр сеанса |
|||
20
hhhh
14.06.16
✎
10:45
|
Хран = Новый ТаблицаЗначений;
Хран.Колонки.Добавить("База"); Хран.Колонки.Добавить("Обр"); Стр = Хран.Добавить(); |
|||
21
Провинциальный 1сник
14.06.16
✎
10:45
|
(18) Суть в том, что если ты кладешь в хранилище ссылку на несереализуемое нечто - то надо понимать, что это нечто находится в памяти того процесса, который его туда положил. И другой взять оттуда его не сможет.
|
|||
22
Stepa86
14.06.16
✎
10:47
|
(19) Даже если это работает (проверять я это конечно не буду), то это ничем не лучше хранения на модуле с кешем. Временное хранилище все равно живет те же 20 минут и инициализировать все равно нужно.
|
|||
23
Stepa86
14.06.16
✎
10:49
|
(21) 1С вообще не очень хорошо относятся к пиханию во временное хранилище разных несереализуемых значений. Легко может отвалится при следующем обновлении и фокус с помещением через структуру (фиксированную структуру)
|
|||
24
Stepa86
14.06.16
✎
11:00
|
(19) Хотя о чем это я, у меня как раз то же самое, только заполняется через фоновое задание
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |