Современные cистемы управления содержимым Web-ресурсов    

Карпушкин Сергей Викторович
доцент каф. АПТО, ТГТУ
к.т.н.,
Тамбов
Борисенко Андрей Борисович
доцент каф. АПТО, ТГТУ
к.т.н.,
Тамбов
Моисеев Алексей Иванович
магистрант ТГТУ,
соискатель,
Тамбов

В настоящее время наиболее массовым и динамично развивающимся сервисом Интернета остаётся “Всемирная паутина” – World Wide Web (WWW), доступ к которой  возможен не только с обычных персональных компьютеров, но также с мобильных телефонов, карманных компьютеров и даже игровых приставок. Повсеместное использование Сети делает ее  привлекательной для бизнеса. На сегодняшний день практически любая фирма или организация имеет, по крайней мере, свой сайт-визитку.

Рост количества сайтов в Интернете происходит взрывными темпами. По данным авторитетного британского сетевого агентства Netcraft [1] в 2005 году было зарегистрировано 17,5 миллионов сайтов. По мнениям аналитиков, 2006 год превысит эти рекордные показатели.

В последние годы к разработке сайтов привлекаются люди, не имеющие опыта разработки в области Интернет-технологий. Не смотря на то, что CMS существенно упрощает разработку сайтов, часто для сопровождения Web-ресурса на базе современной CMS необходимы услуги профессионального Web-разработчика. Как правило, для нестандартных Web-ресурсов необходимы дорогостоящие услуги по модификации предварительно купленной системы. Нередко трудоёмкость такой модификации, сопоставима с разработкой новой системы. Кроме того, этот процесс затрудняет обновление изменённых программных модулей. Люди и организации, которые не могут позволить себе покупку подобных услуг, испытывают сложности с полноценным сопровождением своих ресурсов.

Как показывает практика, современные технологии не позволяют создать платформу, которая способна обеспечить возможность построения на своей основе сайта любой структуры без ущерба для удобства использования, причем в обозримом будущем появление такой  платформы не предвидится. Системы, которые развиваются в направлении универсальности, быстро увеличиваются в объёмах, что приводит к неэффективному использованию аппаратных ресурсов (в частности это выражается в избыточной нагрузке на систему управления базами данных), возникновению множества ошибок, генерированию, так называемого, «тяжёлого» HTML-кода.

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

К системе предъявляются следующие требования:

1.     Максимальное разделение алгоритмов извлечения информации из базы данных и её последующей визуализации.

2.     Обеспечение преемственности (многократного использования) кода между различными проектами.

3.     Ограничение количества потенциальных ошибок на системном уровне.

4.     Обеспечение высокого уровня сервиса, позволяющего производить корректировку сайта непосредственно владельцами без привлечения специалистов.

5.     Обеспечение гибкости, масштабируемости и расширяемости.

Исторически сформировавшийся подход к конструированию сайтов основывается на создании модулей, объединяющих в себе способы извлечения данных и способы их визуализации в одном документе (например, php). Данный способ имеет существенные недостатки – невозможность внесения никаких изменений без программиста, дублирование кода в разных модулях, выполняющих очень схожие задачи. В противовес подобным подходам предлагается максимально абстрагировать способы извлечения данных из БД от способов их визуализации. Для чего вводятся понятия визуального компонента – прямоугольного пространства на web-странице, которое используется для визуализации информации и источника данных – подпрограммы, осуществляющей извлечение некоторых данных из БД. Конструирование сайта сводится к манипулированию этими двумя сущностями.

На смену классической разметке текста приходят структурированные методы создания шаблонов страниц. Строительным материалом Web-страниц являются компоненты, благодаря которым вёрстка представляет собой процесс, схожий с разработкой интерфейса приложений в визуальных редакторах (например, Delphi). Компонент представляет собой объект некоторого класса. Внутри базы данных класс компонента определяет структуру одной или нескольких таблиц. При инициализации класса происходит добавление новых записей в соответствующие таблицы. Идея визуализации при помощи компонентов базируется на принципах иерархической вложенности прямоугольных объектов друг в друга. Шаблон страницы представляет собой иерархическую структуру, состоящую из компонентов и других шаблонов.

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

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

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

Полезная информация в базе данных хранится в строго типизированном виде, где каждая запись представляет собой объект определённого типа. Система поставляется с комплектом предопределённых типов объектов, такими как “Новости”, “Статьи”, “Товары”. Каждый тип объекта задаёт в базе данных набор полей одной или нескольких таблиц и, в последнем случае, при необходимости, определяет связи между ними. Каждая единица полезной информации (например, новость) является объектом некоторого типа. Добавление новой информации представляет собой создание нового объекта существующего типа и определение его полей.

В рамках данной концепции сценарий разработки нового сайта сводится к следующему:

-      проектирование, т.е. определение структуры таблиц, проработка эргономики, формирование технического задания;

-      разработка типов объектов для информации, которая будет представлена на сайте;

-      разработка источников данных;

-      разработка шаблонов страниц на базе имеющихся компонентов;

-      подключение выходов источников данных к свойствам компонентов.

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

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

Среди других возможностей рассматриваемого решения следует выделить подсистему безопасности, которая обладает рядом необходимых качеств:

-      средства безопасности, позволяющие задавать описания ситуаций и способы реагирования системы на них;

-      резервирование имеющейся информации и ведение статистики изменений;

-      протоколирование хода работы системы и ведение статистики;

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

Подсистема разделения уровней доступа позволяет определять права на просмотр и изменение информации для конкретных страниц и разделов системы в целом. Каждая группа пользователей обладает доступом только к части всей системы, например посетителям сайта доступен только просмотр публичных Web-страниц, менеджерам – ещё и раздел администраторской части для управления содержимым. Право на просмотр всех разделов системы имеют пользователи с учётной записью аудитора. Только разработчики могут править любые настройки, в том числе создание новых типов учётных записей. Целью создания подобного разделения прав доступа является исключение возможности краха Web-ресурса, по причине некорректных действий владельцев системы.

В качестве примера проиллюстрируем процесс создания шаблона страницы, см. рис.1-4.

рис.1 Первый этап

рис. 2 Второй этап

рис. 3 Третий этап

рис. 4 Четвёртый этап

 

Литература

1. http://www.netcraft.com/