Новая модель клиент-серверного взаимодействия
Новая модель клиент-серверного взаимодействия
Перенос функциональности на сервер
Архитектура управляемого приложения ориентирована на максимальный перенос выполнения всей функциональности на сервер и максимальное «облегчение» клиента.
В предыдущих версиях платформы форма и командный интерфейс полностью располагались на клиенте и обращения к серверу выполнялись в основном для считывания и записи прикладных данных. Также на сервер могли переноситься отдельные части вычислений с помощью серверных общих модулей.
В управляемом приложении вся работа прикладных объектов выполняется только на сервере. Функциональность форм и командного интерфейса также реализована на сервере.
На сервере выполняется подготовка данных формы, расположение элементов, запись данных формы после изменения. На клиенте отображается уже подготовленная на сервере форма, выполняется ввод данных и вызовы сервера для записи введенных данных и других необходимых действий.
Аналогично командный интерфейс формируется на сервере и отображается на клиенте. Также и отчеты формируются полностью на сервере и отображаются на клиенте.
При этом механизмы системы ориентированы на минимизацию объема данных, передаваемых на клиентский компьютер. Например, данные списков, табличных частей и отчетов передаются с сервера не сразу, а по мере просмотра их пользователем.
Что работает на сервере:
- Запросы к базе данных
- Запись данных
- Проведение документов
- Различные расчеты
- Выполнение обработок
- Формирование отчетов
- Подготовка форм к отображению
…
Что работает на клиенте:
- Получение и открытие форм
- Отображение форм
- «Общение» с пользователем (предупреждения, вопросы…)
- Небольшие расчеты в формах, требующие быстрой реакции (например, умножение цены на количество)
- Работа с локальными файлами
- Работа с торговым оборудование
Встроенный язык на клиенте
Однако управлять функциональностью системы можно и на клиенте. На клиенте поддерживается работа встроенного языка. Она используется в тех случаях, когда необходимо провести расчеты, связанные с отображенной на экране формой, например, быстро (без обращения к серверу) подсчитать сумму строки документа на основе цены и количества; задать пользователю вопрос и обработать ответ; прочитать файл из файловой системы компьютера и отправить его на сервер.
Но работа встроенного языка на клиенте поддерживается в строго ограниченном объеме. Клиентские процедуры в модулях в явном виде отделяются от серверных, и в них используется ограниченный состав объектной модели встроенного языка.

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

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

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

Файловый вариант
Работа в файловом варианте также поддерживается системой для конфигураций, использующих режим управляемого приложения. Никаких изменений для этого в конфигурацию вносить не нужно. Разумеется, в этом случае вся функциональность (как серверная, так и клиентская) выполняется на клиенте.
Взаимодействие с кластером серверов
В управляемом приложении введено понятие сеанс работы пользователя. В отличие от соединения, сеанс является логической идентификацией работы пользователя с системой и не привязан к конкретному рабочему процессу кластера. Для пользователя, работающего с тонким или Веб-клиентом, каждый вызов сервера может отрабатываться любым из имеющихся рабочих процессоров на любом сервере кластера.
Следует отметить, что повышена надежность работы сервера и его устойчивость к сбоям программной и аппаратной части. Выход из строя или плановая замена сервера не требуют завершения работы пользователей.
Выполняется автоматическая перезагрузка серверов (recycling).
Изменение в подходах к разработке
- Раньше: только в отдельных случаях нужно было разбираться с клиент-серверным взаимодействием
- Теперь: каждый разработчик должен будет понимать, что он в явном виде программирует отдельно клиентскую и серверную части
- Разработчик должен управлять частотой вызовов сервера и объемом передаваемой информации
- В конфигурациях нужно будет четко отделять код бизнес-логики от кода интерфейса
- Нужно будет активнее использовать привилегированный режим, выполняя в нем все операции, не связанные с отображением, например, проведение документа.
|