Многие технические специалисты, привыкшие к классической клиент-серверной архитектуре, задаются вопросом: каким образом тонкий клиент 1С умудряется работать с базой данных, расположенной в обычном сетевом каталоге? Ведь само название "Тонкий клиент" подразумевает, что основная нагрузка и работа с данными должны происходить на стороне сервера. В этой статье мы подробно разберем внутреннее устройство этого механизма, выясним роль специализированной серверной среды и проанализируем риски использования такого режима.
Разберем ситуацию, когда пользователь запускает тонкий клиент и указывает путь к информационной базе в виде сетевого пути (например, \\Server\1C_Base). На первый взгляд кажется, что это противоречит самой сути управляемого приложения, но на самом деле никакой магии здесь нет. Проанализируем, что происходит внутри процесса 1cv8c.exe.
Когда тонкий клиент открывает файловую базу (локально или по сети), внутри него автоматически организуется специализированная серверная среда. Это означает, что библиотеки, отвечающие за серверную логику (выполнение кода в модулях с признаком НаСервере) и работу с движком базы данных (файлом 1Cv8.1CD), подгружаются непосредственно в процесс тонкого клиента на компьютере пользователя.
Рассмотрим ключевые особенности этого режима:
НаСервере, не происходит передачи данных по сети на удаленный сервер приложений. Вместо этого управление передается внутри памяти процесса из одного контекста в другой.Выясним причину, по которой у одних пользователей база в сетевой папке открывается тонким клиентом, а у других — нет. Все дело в составе установленных компонентов 1С:Предприятия. Разберем два важных пункта в инсталляторе:
Посмотрим на ситуацию со стороны системного администрирования: если вы планируете использовать файловые базы через общие папки, необходимо убедиться, что при развертывании платформы был выбран именно файловый вариант тонкого клиента.
Рассмотрим подробнее, как передаются данные при работе через сетевую папку. В этом режиме используется протокол SMB (Server Message Block). Это критически важный момент для понимания производительности.
Поскольку "сервер" находится на компьютере пользователя, он вынужден запрашивать фрагменты файла 1Cv8.1CD из сетевой папки для выполнения любого запроса. Проанализируем пример: если пользователю нужно сформировать отчет, требующий выборки данных из таблицы размером 1 ГБ, этот объем данных (или его значительная часть) будет перекачан по сети на компьютер пользователя. Это создает огромную нагрузку на локальную сеть и дисковую подсистему сервера, где лежит папка.
Важный момент: В отличие от работы через веб-сервер, где передаются уже обработанные и сжатые данные (результаты запросов), работа через сетевую папку гоняет "сырые" бинарные данные файла базы данных.
Выясним, почему опытные администраторы стараются избегать работы тонкого клиента через сетевые папки. Основная проблема заключается в целостности данных. Поскольку единого управляющего процесса (сервера) нет, блокировками файлов управляет операционная система через протокол SMB.
Разберем типичные риски:
Рассмотрим более правильный способ организации работы тонкого клиента с файловой базой без использования клиент-серверной лицензии. Это публикация информационной базы на веб-сервере (Apache или IIS).
В этом случае схема работы меняется:
Проанализируем преимущества такого подхода: "серверная среда" теперь запускается на том же компьютере, где лежит файл базы. Сетевой трафик минимизируется, так как передаются только результаты выполнения кода, а стабильность работы значительно повышается, так как работа с файлом 1Cv8.1CD происходит локально для веб-сервера.
Подводя итог, можно сказать, что возможность работы тонкого клиента через сетевую папку — это полезная функция для быстрой настройки или очень маленьких баз, но для стабильной и быстрой работы предприятия следует рассматривать публикацию на веб-сервере или переход на полноценный клиент-серверный вариант.