Новая модель клиент-серверного взаимодействия

Новая модель клиент-серверного взаимодействия

Перенос функциональности на сервер

Архитектура управляемого приложения ориентирована на максимальный перенос выполнения всей функциональности на сервер и максимальное «облегчение» клиента.

В предыдущих версиях платформы форма и командный интерфейс полностью располагались на клиенте и обращения к серверу выполнялись в основном для считывания и записи прикладных данных. Также на сервер могли переноситься отдельные части вычислений с помощью серверных общих модулей.

В управляемом приложении вся работа прикладных объектов выполняется только на сервере. Функциональность форм и командного интерфейса также реализована на сервере.

На сервере выполняется подготовка данных формы, расположение элементов, запись данных формы после изменения. На клиенте отображается уже подготовленная на сервере форма, выполняется ввод данных и вызовы сервера для записи введенных данных и других необходимых действий.

Аналогично командный интерфейс формируется на сервере и отображается на клиенте. Также и отчеты формируются полностью на сервере и отображаются на клиенте.

При этом механизмы системы ориентированы на минимизацию объема данных, передаваемых на клиентский компьютер. Например, данные списков, табличных частей и отчетов передаются с сервера не сразу, а по мере просмотра их пользователем.

Что работает на сервере:

  • Запросы к базе данных
  • Запись данных
  • Проведение документов
  • Различные расчеты
  • Выполнение обработок
  • Формирование отчетов
  • Подготовка форм к отображению …

Что работает на клиенте:

  • Получение и открытие форм
  • Отображение форм
  • «Общение» с пользователем (предупреждения, вопросы…)
  • Небольшие расчеты в формах, требующие быстрой реакции (например, умножение цены на количество)
  • Работа с локальными файлами
  • Работа с торговым оборудование

Встроенный язык на клиенте

Однако управлять функциональностью системы можно и на клиенте. На клиенте поддерживается работа встроенного языка. Она используется в тех случаях, когда необходимо провести расчеты, связанные с отображенной на экране формой, например, быстро (без обращения к серверу) подсчитать сумму строки документа на основе цены и количества; задать пользователю вопрос и обработать ответ; прочитать файл из файловой системы компьютера и отправить его на сервер.

Но работа встроенного языка на клиенте поддерживается в строго ограниченном объеме. Клиентские процедуры в модулях в явном виде отделяются от серверных, и в них используется ограниченный состав объектной модели встроенного языка.

На клиенте не допускается непосредственная работа с базой данных. Не допускается работа непосредственно с прикладными объектами, например, недоступны такие типы, как СправочникОбъект.<имя>. Не допускается использование запросов. При необходимости вызова действий с данными в клиентском коде нужно вызывать серверные процедуры, которые уже будут обращаться к данным.

Работа управляемых форм

Для работы с прикладными данными в формах используются специализированные типы данных, предназначенные именно для отображения и редактирования данных в форме. Они наполняются на сервере из данных прикладных объектов и преобразуются потом обратно для записи измененной информации в базу данных.

Таким образом, форма не работает непосредственно с данными прикладных объектов, а имеет собственную структуру данных, связанную с элементами формы. Преобразование данных прикладных объектов в данные формы и обратно осуществляется системой автоматически при выполнении стандартных действий в форме.

Но при реализации собственных алгоритмов разработчик должен вызывать такое преобразование самостоятельно. Таким образом, разработчику нужно понимать, что он фактически работает с двумя контекстами исполнения системы: серверным и клиентским. И между ними происходит обмен данными. При разработке необходимо заботиться о минимизации клиент-серверного взаимодействия (сокращении объемов передаваемых данных, минимизации вызовов сервера и максимальной реализации бизнес-логики на сервере).

Одинаковая работа в разных режимах

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

Это определяет ряд особенностей и ограничений. Например, для работы с файлами предоставляется специальный механизм, который обеспечивает обмен файлами между клиентом и сервером с учетом ограничений, которые накладывает модель безопасности интернет-браузеров.

Эффективная проверка прав доступа

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

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

Файловый вариант

Работа в файловом варианте также поддерживается системой для конфигураций, использующих режим управляемого приложения. Никаких изменений для этого в конфигурацию вносить не нужно. Разумеется, в этом случае вся функциональность (как серверная, так и клиентская) выполняется на клиенте.

Взаимодействие с кластером серверов

В управляемом приложении введено понятие сеанс работы пользователя. В отличие от соединения, сеанс является логической идентификацией работы пользователя с системой и не привязан к конкретному рабочему процессу кластера. Для пользователя, работающего с тонким или Веб-клиентом, каждый вызов сервера может отрабатываться любым из имеющихся рабочих процессоров на любом сервере кластера.

Следует отметить, что повышена надежность работы сервера и его устойчивость к сбоям программной и аппаратной части. Выход из строя или плановая замена сервера не требуют завершения работы пользователей.

Выполняется автоматическая перезагрузка серверов (recycling).

Изменение в подходах к разработке

  • Раньше: только в отдельных случаях нужно было разбираться с клиент-серверным взаимодействием
  • Теперь: каждый разработчик должен будет понимать, что он в явном виде программирует отдельно клиентскую и серверную части
  • Разработчик должен управлять частотой вызовов сервера и объемом передаваемой информации
  • В конфигурациях нужно будет четко отделять код бизнес-логики от кода интерфейса
  • Нужно будет активнее использовать привилегированный режим, выполняя в нем все операции, не связанные с отображением, например, проведение документа.

Продукт решает задачи 95% сайтов