2. Взаимодействие клиента и сервера
Для решения поставленной задачи в данной работе предлагается перенести всё программирование информационной системы – взаимодействие с базой данных, описание логики работы приложения, реализацию пользовательского интерфейса – на сторону сервера и осуществлять на языке M.
Собственно инструментальную среду qWORD-XML, названную универсальным браузером, предлагается реализовать на Delphi как клиентское приложение к M-серверу. Управление клиентской частью предлагается осуществлять в реальном времени по командам сервера. Управление клиентской частью включает в себя создание объектов – экземпляров классов Delphi, установку их свойств и вызов их методов в реальном времени по командам сервера. Эти классы являются потомками визуальных (соответствующих видимым объектам) и невизуальных классов Delphi.
Для взаимодействия с клиентской частью на сервере создаётся системный класс qARM, который содержит как методы управления клиентской частью, так и методы-обработчики событий клиента.
Управление клиентской частью реализуется с помощью следующих методов класса qARM (табл. 1).
Табл. 1. Управление клиентской частью |
|
Действие |
Вызов метода на сервере |
Создание объекта класса Delphi |
D qARM.wC(<класс>,<имя объекта>,<параметры>) |
Вызов метода объекта |
D qARM.wM(<имя объекта>,<имя метода>,<параметры>) |
Присвоение значения свойству объекта |
D qARM.wP(<имя объекта>,<имя свойства>,<значение>) |
Предлагается следующая схема взаимодействия клиентской части и серверной части (здесь предполагается, что вся инициализация уже выполнена и система находится в состоянии ожидания действий пользователя) (рис. 3).
Рис. 3. Схема взаимодействия клиента и сервера
Пользователь производит некоторое действие, требующее реакции системы (нажатие кнопки мыши, клавиши и др.) Происходит событие (1), обработчик события клиентской программы вызывает (2) соответствующий метод-обработчик из класса qARM сервера и передает ему необходимые параметры, например, имя метода, который необходимо выполнить по данному действию пользователя. Обращение к серверу всегда является модальным для клиента, т.е. клиентское приложение ожидает завершения выполнения метода на сервере, прежде чем сможет продолжить выполнение. Благодаря этому уменьшается количество пересылок между клиентом и сервером и увеличивается скорость работы.
В это время на сервере вызванный метод (3) производит некоторые действия и может обращаться к методам wC, wM, wP. Эти методы не вызывают никаких действий на клиенте (он простаивает в ожидании), однако при этом формируется программа для клиента – запись последовательности действий, которые необходимо осуществить на клиенте (4). По окончании выполнения серверного метода работа клиентского приложения продолжается, оно считывает сформированную программу (5) и последовательно её исполняет (6), создавая объекты, присваивая значения их свойствам и вызывая их методы. Пока клиент занят обработкой программы, все действия пользователя ставятся в очередь для последующей обработки.
При программировании на стороне сервера вызываются методы работы с базой данных и методы клиентской части (методы объектов Delphi). Весь вид приложения определяется сервером и создается практически «с нуля» в процессе работы, а универсальный браузер представляет собой универсальное клиентское приложение ко всем построенным в qWORD-XML базам данных.
