Long polling в 1С без Apache и IIS

·
  • long-polling
  • http
  • разработка
  • a4

Встроенный HTTP-приёмник в Расширенной редакции принимает запросы от расширения 1С через polling. Apache и IIS на стенде разработчика не нужны.

Чтобы AI-ассистент мог обращаться к данным 1С, нужна точка интеграции. Штатный способ это опубликовать HTTP-сервис через Apache или IIS. На стенде разработчика это тяжело: каждый раз ставить веб-сервер, настраивать виртуальный каталог, дёргать после правки. Под Linux и macOS интеграция отдельно болезненная.

В Расширенной редакции есть встроенный long polling: процесс mcp-1c-advanced поднимает HTTP-приёмник, а компактное расширение в 1С общается с ним через polling. Apache и IIS не нужны.

Как это работает

Бинарник запускается с флагом --listen :9090 и встаёт на TCP-порт. Это обычный Go-овский http.Server, без cgo и без обращений к платформенным библиотекам. Работает в любом окружении где запускается само ядро Платформы: Windows, Linux, macOS.

Со стороны 1С устанавливается расширение MCP_Polling. Оно периодически обращается к этому порту, забирает задачи и возвращает результаты. Базы помечаются как канал опроса через схему URL: --base "MyBase=poll://localhost:9090". Это сигнал что доступ к базе идёт через канал опроса, а не напрямую через COM или IBConnection.

Запуск

mcp-1c-advanced --base "acc=poll://localhost:9090" \
    --listen :9090 \
    --user Администратор --password ""

После старта процесс ждёт обращений от расширения 1С. Дальше связка работает прозрачно: AI-ассистент шлёт MCP-запрос к серверу, сервер ставит его в очередь, расширение в 1С забирает и выполняет, ответ возвращается.

Когда это полезно

Локальная разработка. Поднимать Apache на каждой машине дорого по времени. Под macOS штатной интеграции с 1С почти нет, под Linux она шаткая. Встроенный приёмник снимает это препятствие.

Тестовый стенд. Long polling тянет одно соединение без необходимости настраивать IIS. Полезно когда стенд живёт в контейнере без полноценной публикации сервисов.

Конвейер CI. Собрали дамп, запустили процесс, прогнали интеграционные тесты, погасили процесс. Никаких внешних веб-серверов, никаких настроек публикации.

Ограничения

Один процесс, один порт. Кластеризация делается через несколько процессов с разными --listen.

TLS терминируется снаружи. На localhost он не нужен, для среды эксплуатации остаётся nginx или IIS как точка терминации сертификатов. Встроенный приёмник на роль боевого веб-сервера не претендует.

Аутентификация через параметры сеанса 1С (--user, --password). Отдельный промежуточный обработчик аутентификации не реализован.

Сравнение со штатной публикацией

В штатной публикации HTTP-сервиса нужны Apache или IIS, конфиг default.vrd, виртуальный каталог, перезапуск веб-сервера при изменении сервиса. В случае long polling правка кода это правка модуля расширения. Время цикла «изменил, проверил» сокращается с минут до секунд.

В среде эксплуатации остаётся обычный nginx или IIS как точка терминации TLS и балансировка. Long polling здесь не конкурент, а альтернатива для разработки и интеграционных стендов.