новое событие
Информационный поток
Задания вакансии материалы разработки сообщения форума

Узкое место в COM-соединении

  • Добавить свою публикацию
  • для этого требуется регистрация

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

Изображение

В чем же дело?

В момент соединения по COM-соединению, подключаемая база полностью подгружает конфигурацию базы, к которой мы подключаемся. Попробовав, например, подключится к базе "Бухгалтерия предприятия", нажи ожидания длились бы достаточно долго, так как объем конфигурации исчисляется сотнями мегабайт. Становится ясным, что для более быстрой работы все соединения необходимо кэшировать и поддерживать.

Анализ производительности

Зададимся вопросом, а нужно ли вообще кэшировать соединения и принесет ли это свои плоды при интенсивной работе пользователя с COM-соединением. Выполним измерение времени подключения к конфигурации объемом 20 кБайт.

Изображение

Мы видим, что подключение к небольшой базе заняло 3,5 секунды. При подключении к более объемной базе время увеличится в несколько раз.

При хранении поддерживаемого соединения эти действия займут на несколько порядков меньше времени.

Изображение

Как нам сберечь активным наше COM-соединение?

Проблема в том, что платформа 1С не предоставляет стандартных стредств для зранения COM-соединений в ИБ. В справочниках и документах сохранять соединение бессмысленно, так как оно часто может меняться. Наиболее перспективным вариантом выглядит хранение соединения в параметре сеанса. Но и тут все не так гладко. Ведь для хранения COM-соединения нет ни одного подходящего типа данных.

Данные рассуждения приводят к тому, что хранение возможно только на клиенте в какой-нибудь переменной. Рассмотрим вариант для управляемой формы. Необходимо инициализировать в форме переменную с директивой &НаКлиенте, куда мы и будем сохранять значения подключения. Соответственно вызывать это подключение можно тоже только на клиенте, так как передать COM объект с клиента на сервер вы не сможете. Для обычных форм нет разделения на сервер и клиент и этот механизм становится даже проще. Нельзя забывать перед закрытием используемой формы разрывать соединение, чтобы предотвратить утечку памяти.

Вместо вывода

Хоть и данная схема решает некоторые проблемы производительности, однако она далека от идеала. Каждая форма, где нужно будет поддерживать COM-соединение, будет создавать новый сеанс в информационной базе приемнике, соответственно будет требоваться и большее количество лицензий. Также одним из главных минусов является исключение поддержки соединения на серверею

В следующей статье будет рассмотрен более совершенный способ, который исключает из себя эти проблемы (подключение через Web сервисы).


 
0
Читайте также
Разработки
Просмотрщик COM-объектов
Просмотр СОМ-объектов
Очистка базы от документов УУ версия на SQL
Подготовка (очистка базы) от управленческой информации на SQL
Еще от автора
≡ к списку статей