next up previous contents
Next: Классы и модули для Up: Работа сервера приложений Previous: Ваше первое приложение в   Contents

Общая схема работы и объекты общего назначения

Работа клиентского приложения начинается на этапе подключения нового клиентского приложения к серверу приложений. Сразу же после подключения сервер создает объект класса child (см. файл child.py), который в дальнейшем занимается работой с конкретным клиентским соединением а также запускает новую нить ( thread ).

Ниже следует описание методов объекта child.

run представляет собой собственно главный цикл чтения и отсылки информации на клиентское приложение;
send используется для непосредственной отсылки информации на клиентское соединение. При необходимости, например, при работе с клиентом под windows, передаваемые данные автоматически будут перекодированы в необходимую кодировку; Метод является "низкоуровневым" и может быть использован в специальных случаях.
get позволяет получать информацию от клиентского приложения. Нюанс работы состоит в том, что получение информации возможно в двух режимах - данные о сигналах виджетов клиента или же ответная информация о состоянии виджета клиента как ответ на тэги <info>...</info>. Метод является "низкоуровневым" и может быть использован в специальных случаях.
say_to_log(level,text) - позволяет выводить произвольную информацию в лог-файлы каталога log сервера приложений. Параметр level означает в данном случае: 1 - протокол ошибок, 2 - протокол предупреждений, 3 - информационный протокол, 4 - протокол запросов sql. Данные параметры в символьном эквиваленте представлены в модуле logger.py как logger.ERRORS, logger.WARNINGS, logger.INFO и logger.SQL соответственно.

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

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

Собственно работа прикладного приложения начинается с единовременного вызова на нем метода run(child). Как результ метод должен вернуть хотя бы один xml-пакет, содержащий новое окно пользователя (типичное окно - запрос имени и пароля клиента). В противном случае клиент отключается.

В дальнейшем работа просходит по стандартному сценарию: сервер ожидает возникновения сигнала на клиентском приложении. Сигнал в формате <window_name>.<widget_name>, где

window_name - имя окна, в котором произошло событие;
widget_name - имя виджета, вызвавшего сигнал,
передается на сервер приложений, который в свою очередь вызывает одноименный прикладной метод прикладного модуля, для которых на сервере приложений выделен каталог impl. В качестве параметра модулю передается ссылка на экземпляр объекта child. Результат работы модуля, если он имеется, передается клиентскому приложению.



2004-12-28