Понадобилось мне реализовать отображении информации об остатках из одной базы в другой в реальном времени.
Держать у каждого пользователя в сеансе дополнительное COM-соединение не очень хотелось. Так и родилось данное решение.
Принцип работы довольно прост:
- На компьютере (назовем его сервером) запускается обработка, где создается объект "AddIn.1CHServer" Этот сервер будет прослушивать определенный порт и ожидать входящий запрос от клиента.
- Клиент отправляет запрос серверу с помощью объекта HTTPСоединение
- AddIn.1CHServer получив запрос генерирует внешнее события для сеанса 1С Предприятия в котом данный объект создан
- На сервере выполняется запрошенный клиентом код и результат возвращается клиенту при помощи метода ВернутьРезультат(...)
Результат, возвращаемый клиенту может быть только тексовым т.к. запрос отправляется при помощи метода Получить() объекта HHTPСоединение
Теперь вместо того, чтобы держать 10-15 постоянных COM-соединений клиент лишь отправляет текст кода для выполнения в сеансе, где создан AddIn.1CHServer и получает ответ.
Работает, конечно, медленнее, чем при могло бы быть через "V8x.ComConnector", но есть и свои преимущества. Например, если надо срочно обновить базу данных, то не надо убивать все COM-сеансы, а достаточно просто остановить на время 1CHServer и обновить БД.
Не рекомендуется выполнять "тяжелый" код на сервере, т.к. это замедлит получение ответа другими клиентами.
ОПИСАНИЕ КОМНОНЕНТЫ
Методы:
- Запустить(<Порт>) - запуск прослушивания указанного порта;
- Остановить() - остановка сервера;
- ВернутьРезультат(<ТекстовыйРезультат>) - возврат результата клиенту (метод обязательно должен вызываться, иначе сервер перестанет принимать входящие запросы от клиентов);
Свойства:
- Порт - порт на котором работает сервер (только чтение);
В случае ошибки (при работе компоненты или при выполнении кода на сервере) возвращается результат вида: Error: <ОписаниеОшибки>
В коде, выполняемом на сервере, не должно быть комментариев
Для работы компоненты потребуется установленный Microsoft .NET Framework 2.0, взять его можно отсюда.
Регистрация компоненты в Windows - запустить reg.bat
Удаление информации о компоненте - запустить unreg.bat
Прилагаются примеры обработок для сервера и для клиента (8.2)
Критика и предложения приветствуются.