TCL Application Server

Собственно идея лежала на поверхности и мне не понятно почему ее никто не реализовал. :)

А идея заключается в следующем: ни для кого не секрет, что application server - штука очень полезная, особенно когда требуется сопровождение этого application на куче рабочих мест, и особенно, если эти рабочие места функционируют под Windows*. Для создания таких приложений я использую Tcl/Tk и его расширения. Обычно эти приложения работают с каким-либо SQL-сервером.
Логично было-бы хранить эти приложения на сервере с базой данных, а еще лучше в этой базе данных. А учитывая то, что на разных платформах у нас имеют место быть разные кодировки, то в этом случае сервер БД может сам перекодировать тексты программ. Hе менее логично научить встроенный в Tcl autoloader загружать необходимые компоненты из базы данных. Вот собственно это я и попытался реализовать. :)

То, что у меня получилось вы можете взять здесь, только учтите, что могут быть мелкие нестыковки, т.к. я "вырезал" эти примеры из рабочего проекта и отдельно не проверял. Данный вариант написан с использованием BWidget и Oratcl, но это достаточно легко изменить. :)
В комплект входят 3 файла:

Login.tcl
Постоянная клиентская часть. Открывает соединение (с авторизацией) с базой данных, "объясняет" autoloader'у как загружать тексты программ из БД и зовет начальную процедуру Main
tcl_load.tcl
Загрузчик текстов программ в БД. Сканирует каталоги (см. ScriptDir внутри) на предмет файлов *.tcl, парсит их с помощью auto_mkindex_parser (см. man n auto_mkindex) и на основании полученных данных заполняет соотв. таблицы в БД. Этот загрузчик можно будет оформить в виде одного из приложений и прицепить к нему например TCL Developer Studio. :)
apps.sql
SQL-скрипт для создания соотв. таблиц/ролей/... Все, что относится к таблицам apps.help и apps.programs к делу не относятся, но вы можете по коментариям и приложенным исходникам понять, что это такое. :)

При создании сего "шедевра" были использованы некоторые наработки Сергея Лазарева с его великодушного согласия.


Last modified: Tue Jun 24 14:37:30 MSD 2003