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