Архитектура
XMLbySQL является процессором выполняющим команды хранящиеся
в XML-файлах в папке приложения и возвращающим результат выполнения
команд пользователю. Выбор выполняемого командного файла происходит
через переменную с именем "page".
По умолчанию переменной "page"
присвоено значение "index".
Перед выполнением команды к ней может быть применена XSL-трансформация
из указанного в команде файла, в трансформацию в качестве
параметров передаются все переменные текущей веб-сессии пользователя.
К результату выполнения так же может быть применена XSL-трансформация
для получения удобного для просмотра документа.
Пример рабочего цикла
- пользователь набирает в строке адреса браузера http://myserver/myapp/default.aspx?page=test
- веб-сервер читает команды из файла test.xml в папке веб-приложения
- если в узле <binding /> командного
файла указан XSL шаблон преобразования то сервер загружает
его и производит трансформацию команд
- сервер выполняет команды из командного файла
- отдаёт полученый результат пользователю
- если в узле <style /> командного
файла указан XSL-шаблон и в атрибуте transform
указано server то сервер преобразует
результат по шаблону и отдаёт пользователю, если указан
атрибут mime то этот mime-тип указывается
в хедере
- если в атрибуте transform указано
noserver то результат отдаётся пользователю
в формате XML с указанием стиля <?xml-stylesheet
type="text/xsl" href="XSL-шаблон"
?>
- если узел <style /> отсутствует
то результат отдаётся в формате XML
Переменные веб-сессии
В трансформации команд перед выполнением используются следующие
типы переменных (в порядке убывания приоритета):
- переменные из GET-запроса
- переменные из POST-запроса
- переменные сохранённые в Cookies
- переменные уровня приложения (т.е. хранящиеся в appSettings/add
key=... файла web.config в папке приложения)
- переменные из предидущих сессий
Т.е. при обработке test.xml вызванного из формы
<form method="post" action="default.aspx?page=test&anyText=test2">
<input name="anyText" type="text"
id="anyText" value="test1">
</form>
переменной anyText будет присвоено значение test2 а не test1
т.к. приоритет переменных переданных методом GET выше чем
переданных методом POST
для передачи и получения переменных в преобразование используется
стандартный XSLT механизм. Все переменные сохраняются на сервере
в течении сессии.
Типы выполняемых команд
Командами могут быть запросы к базам данных, получение сведений
о файловой системе, отправка писем.
Более подробно описаны на стр. Типы
команд
|