VII Международная конференция по электронным публикациям "EL-Pub2002"

23-27 сентября 2002 г., г. Новосибирск, Академгородок

Система унифицированного управления динамическим веб-контентом

Абдуллин В.
Web-лаборатория НГУ, Новосибирск

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

И здесь требуется решить две задачи:

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

Дизайн

Использование технологий XML позволяет полностью решить первую задачу. Именно благодаря им становится возможной работа с разнородной информацией стандартными средствами. Для системы неважно, что хранится в базе: статическое содержание веб-страницы, регулярно меняющиеся новости или навигация по сайту - результатом ее работы будет XML - документ, содержащий требуемые данные.

Размещение данных на странице, в свою очередь, происходит с помощью таблиц преобразований XSLT. При этом мы можем использовать разные XSLT таблицы для отображения данных, предназначенных разным группам пользователей, или для создания различных версий сайта (скажем, дизайн русскоязычной и англоязычной версий может различаться). Или мы можем учитывать необходимость изменений - если они небольшие - в одной таблице.

Ядро системы

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

Управление параметрами системы - сосредоточенное в одном интерфейсе - и стало основной функцией ядра. Это:

  1. Управление структурой базы (таблицы, их связи).
  2. Регистрация пользователей и их прав.
  3. Управление процедурами.
  4. Управление возможными запросами к базе.

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

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

Процедуры же, в свою очередь, исполняют запросы к хранилищу данных, составляя по их результатам выходной XML-документ.

Реализация

Тогда алгоритм функционирования нашей системы будет выглядеть следующим образом:

  1. Веб-страница запрашивает некоторый модуль (запрос может передаваться либо http-методами, либо с помощью аргументов функций серверного скриптового языка - в нашем случае используется PHP).
  2. Запрос преобразуется в XML-документ, передаваемый ядру системы.
  3. Ядро, на основании документа-запроса, вызывает соответствующую процедуру, проверяя при этом права доступа пользователя к этой процедуре. После вызова в журнал записывается результат исполнения процедуры.
  4. Процедура вызывает принадлежащие ей запросы, формируя выходной XML-документ, состоящий из стандартно оформленных результатов исполнения отдельных запросов к базе плюс некоторые мета-данные.

Конкретная реализация веб-сайта, в результате, превращается в последовательность таких действий:

  1. Все содержание веб-страницы, нуждающееся в периодическом обновлении, разбивается на модули.
  2. С модулями связываются процедуры, после исполнения которых мы получаем набор XML-документов.
  3. Создаются XSLT-таблицы, преобразующие XML-документы к готовым веб-документам, предоставляемых пользователю.



|Электронная библиотека| |Математические публикации| |Информационные ресурсы|
Ваши комментарии
Обратная связь
[SBRAS]
[Головная страница]
[Конференции]
[СО РАН]

© 2002, Сибирское отделение Российской академии наук, Новосибирск
© 2002, Объединенный институт информатики СО РАН, Новосибирск