Блок-тормоз Фроста


Yet another penis enlarger
Login:  Pass:  
   назад · 24.12.2008 · вперёд    [ что это за?.. ] [ смотреть по темам ] [ статистика ] [ движок ]   

 Пул соединений V81.COMConnector для ASP


  411 days 22 hours ago (14:58)

Реализую взаимодействие нашей информационной системы с заводской программой, так называемой DMS-Backbone. Смысл состоит в написании механизма, который передавал бы XML-сообщения от DMS-Backbone серверу 1C:Предприятие и получал на них ответы. Сообщения эти DMS-Backbone отправляет посредством HTTP-протокола. Собственно, вся задача сводится к тому, чтобы заставить веб-сервер получать эти сообщения и перенаправлять нашему серверу приложений.

Покопавшись в примере реализации интерфейса, предложенным заводом, можно было примерно понять, как это всё функционирует. Нужно просто заставить этот пример на определённом этапе вызывать нужные функции посредством COM-соединения, передавая им параметры, и получая ответы от нашей информационной системы.

Сказано-сделано. Добавил в примере вызов COM-соединения. Всё работает, данные передаются, обрабатываются сервером 1С:Предприятие и возвращаются. Но вот беда, установка соединения длится несколько секунд, то есть довольно тормознуто. Хотелось бы использовать одно соединение на всё время использования приложения. Что же делать?

Полез гуглить. Наткнулся на аналогичный вопрос на форуме SQL.RU. Там, к сожалению, нужного мне решения найти не удалось. Пытался хранить COM-соединение в сессии, но это оказалось ещё хуже: DMS-Backbone создаёт новую сессию при каждой отправке XML-сообщения и после нескольких нажатий кнопки F5 в браузере обнаруживаем кучу соединений на сервере 1С:Предприятие.

И вот сегодня, ковыряясь во встроенной справке 1С:Предприятия обнаружил замечательные свойства у V81.COMConnector: MaxConnections, PoolTimeout и PoolCapacity. Ура! То, что нужно!

В каталог с моими скриптами положил файлик global.asa со следующим содержимым:


<object runat="server" scope="application" id="objV81COMConnector" progid="V81.COMConnector"></object>
<script language="vbscript" runat="server">
sub Application_OnStart
objV81COMConnector.PoolCapacity = 2
objV81COMConnector.PoolTimeout = 60
objV81COMConnector.MaxConnections = 4
end sub
</script>

И теперь, во время соединения с сервером приложений 1С:Предприятие, производится поиск уже существующего, и новое устанавливается только если подходящее соединение не найдено.


Dim V81Connection
Dim V81ConnectionString
V81ConnectionString = "Srvr=""appservername"";Ref=""dbname"";Usr=""username"";Pwd=""userpassword"""
Set V81Connection = objV81COMConnector.Connect(V81ConnectionString)

Пойду похвастаюсь на SQL.ru найденным решением =)



Всего комментариев: 4

[ 1 ]

Slach

  / 25.12.2008 12:25

спасибо за подсказки
жаль правда что на PHP аналогов global.asa нет

$this->v8COM = new COM(’v81.COMConnector’) or wtError::wtDie(«Couldn’t create the COM Component»,255);
$this->v8COM->PoolCapacity = 2;
$this->v8COM->PoolTimeout = 60;
$this->v8COM->MaxConnections = 4;
$this->v8 = $this->v8COM->Connect(WT_1C8_CONNECT_STRING);

в моем случае пока никакого видимого выигрыша не дало
но я пока под нагрузкой из под IIS+php5fcgi это не тестировал


[ 2 ]

Andris

  / 24.07.2009 17:34
Привет, коллега! Ты, если я правильно уловил, трудишься на АвтоГанзе? А я с Диверса. Вот увидел знакомые буржуйские слова «DMS-Backbone», решил зайти ;). На самом деле хотел тебя попросить, если возможно, скинь доки по этой вещи, а то начальство узнало про возможность интеграции, а не понимает, что без доков делать нечего. Буду очень признателен :)

Frost: Если у вас есть дистрибутив DMSBB, с ним в комплекте идет много документации в формате PDF. Дистрибутив DMSBB можно попробовать в представительстве получить.


[ 3 ]

Maxim B.

  / 05.10.2009 09:48
А у вас не было проблемы с «висящим» подключением к 1с?
Когда после работы с Com-объектом (после освобождения), соединение так и оставалось висеть? Есть ли там какие-то способы принудительно закрыть соединение?
Работают под Asp.Net.

Frost: В нашем случае установка COM-соединения выполняется при старте Internet Information Server. Это соединение висит постоянно. Идея пула как раз и состоит в том, чтобы при подключении использовать уже установленное соединение.


[ 4 ]

Maxim B.

  / 05.10.2009 17:06
А как вы выполняете BackUp для 1С, если есть подключенные пользователи?

Frost: Вообще-то, SQL позволяет делать резервные копии без отключения пользователей :)


Всего комментариев: 4


   назад · 24.12.2008 · вперёд