Обзор и классификация систем управления сайтами
Быков Михаил Юрьевич
Системы управления сайтами, получившие широкое распространение в последнее время, облегчают разработку сложных Web – систем, однако ни одна из них не завоевала рынок, поскольку каждая система предназначена для определенной сферы применения и обладает рядом недостатков. В статье проводится классификация современных систем управления сайтами, рассматриваются преимущества и недостатки различных подходов к их построению.
Введение
Недостатки платформ приложений серверной стороны, такие как низкая функциональность, отсутствие визуальных средств управления, трудности с масштабированием привели к тому, что практически каждая компания создает свой инструментарий для получения более эффективной среды разработки. Также существует достаточное количество свободно распространяемых разработок и опубликованных исследований [1-5]. Все подобные системы спроектированы для облегчения управления и изменения сайта (или сайтов, в зависимости от архитектуры системы), оперативного внесения изменений в содержание и дизайн, то есть то, чего не хватает базовым технологиям, хотя можно выделить два основных направления развития таких систем: простое построение сайта для непрофессиональных пользователей, и предоставление платформы для построения сложных Web – систем. Ниже рассматриваются существующие модели систем создания и управления сайтами, а также реализации таких систем.
Интерактивные формы
Данная модель системы дает возможность визуального управления страницами сайта без знания языка HTML с помощью специальных редакторов страниц. Дополнительно предоставляются возможности по созданию интерактивных форм, обычно работающих с базой данных. Такие системы позволяют быстро скомпоновать и разместить на сервере приложение, основанное на статических страницах, формах изменения информации в базе данных и отчетах. Ярким представителем такого подхода является система Cold Fusion [6] от компании Allaire, Inc. Система существует под платформы Windows и Linux, использует базу данных и предлагает разработчикам разрабатывать собственные страницы в среде разработки Cold Fusion Studio. Она построена на принципах CGI. Основным преимуществом системы является легкость создания Web – форм, связанных с базой данных. Это удобное средство быстрого создания сайтов, однако, оно жестко привязано к своей идеологии и среде разработки. Исключено также оперативное исправление сайта, для этого необходимо соединение с сервером с помощью специального ПО. Платформа ASP.NET также предлагает такие возможности, но в более гибкой форме [7]. Недостаток систем такого рода обусловлен жесткой привязкой к определенной базе данных, трудностями с разработкой нестандартных модулей, не связанных с СУБД. Также усложнена процедура обновления сайтов, поскольку приходится обновлять базу данных. Тем не менее, подход является достаточно высокоуровневым и позволяет значительно ускорить разработку простых приложений, связанных с СУБД.
Системы оперативного управления сайтом
Под системами оперативного управления сайтом (управления в оперативном режиме – online) мы подразумеваем системы, позволяющие изменять содержимое сайта, управлять его модулями непосредственно в браузере в оперативном режиме. Такой подход является наиболее удобным с точки зрения оперативности и удобства управления сайтом, поскольку не требует установки дополнительного ПО, изменения могут производится с любого компьютера, подключенного к сети Интернет и будут доступны пользователям сразу после обновления. Трудности такого подхода заключаются в сложности разработки Web – интерфейса управления сайтом, дополнительными требованиями по безопасности.
Наиболее старой системой управления сайтом из систем подобного типа является WikiWikiWeb. Эта система появилась более 10 лет назад для облегчения поддержки сайтов различных сообществ пользователей. Система позволяет любому пользователю редактировать содержание любой страницы сайта непосредственно в браузере. Процесс редактирования отличается простотой, но и ограниченными возможностями. Для форматирования используется особый символьный язык, позволяющий выделять текст, создавать ссылки и т.д. Реализуется система с помощью ядра, которое извлекает содержимое страниц из базы данных, и позволяет интерактивно менять его. В настоящий момент существует масса реализаций системы практически на всех платформах разработки от Perl до .NET. Каждая из реализаций имеет свои дополнительные модули, например со списком последних измененных страниц, интерактивным календарем, графическим редактором в виде Java applet и т.д. Возможности всех реализаций очень ограничены, направлены в основном на изменение текстовой части страниц, а для изменения внешнего вида требуется создание так называемых “тем”, то есть базовых шаблонов. Однако технология заслуживает внимания, так как в ней впервые была предложена возможность менять содержимое сайта в интерактивном режиме с помощью браузера. Это важное развитие в идеологии систем управления сайтами.
В последнее время все большую популярность приобретают средства построения и управления сайтом в оперативном режиме, основанные на PHP: Php-Nuke и PostNuke. Это родственные системы, являющиеся разными ветвями развития одного проекта. Данные системы используют все возможности, предоставляемые шаблонами PHP и базу данных (MySQL, mSQL, PostgreSQL, ODBC, Sybase или Interbase), предоставляют массу стандартных функциональных модулей для построения сайта: новости, статьи, опросы, голосования, файловый менеджер, форум, поисковый модуль, каталогизатор ссылок, почтовая рассылки, и т.д. Системы появились сравнительно недавно и отвечают нуждам разработчиков. Они позволяют подключать к сайту модули сторонних разработчиков, создавать свои собственные, и, что очень важно, администрировать систему с помощью Web – интерфейса. Административный интерфейс позволяет легко и оперативно управлять сайтом. Для его использования не требуется знания HTML или других Web – технологий, поскольку дизайн находится в шаблонах, а бизнес логика в PHP файлах. При необходимости создания специализированной системы, а не просто компоновки существующих модулей необходимо создавать собственные PHP модули, что сопряжено со всеми достоинствами и недостатками разработки на PHP, которая плохо подходит для разработки крупных проектов. Однако помимо недостатков PHP в системах недостаточно развиты возможности управления дизайном. Будучи ориентирована на непрофессиональных пользователей, компонующих готовые модули и выбирающих одну из существующих “тем” дизайна, система не предоставляет удобных средств управления дизайном, не говоря уже об удаленном изменении шаблонов. Для редактирования дизайна необходимо иметь доступ на сервер и редактировать шаблоны там, так же как и PHP файлы. Таким образом оперативность управления является частичной и относится только к содержанию сайта, набору и настройкам модулей, но не к дизайну. Также построение сложных систем затруднено из-за ограничений PHP (недостаточная поддержка объектно-ориентированного подхода, компонентных технологий).
Очевидно, что системы такого рода являются следующим уровнем развития систем управления сайтами, имеют большие перспективы, но существующие на данный момент реализации не предоставляют всех возможностей управления сайтом через браузер (особенно это относится к дизайну), основываются на недостаточно мощных платформах Web – приложений (в большинстве случаев это PHP), а также обладают слабой поддержкой возможностей расширения и интеграции (компонентная архитектура, поддержка кластеризации). Все это препятствует универсальному применению подобных систем, и в особенности их использованию для построения сложных, распределенных Web – систем.
Системы типа Модель – Вид – Управление (Модель 2)
Схема работы Web – приложений накладывает свои ограничения на архитектуру систем управления сайтами. При работе в режиме “запрос-ответ” без сохранения состояния стандартные модели построения интерактивных пользовательских систем (которыми обычно являются Web – системы) не могут применяться. Однако, с некоторыми ограничениями, эти модели могут быть адаптированы. Наиболее распространенной, удобной, и признанной архитектурой интерактивных пользовательских систем является архитектура Модель – Вид – Управление (Model – View – Controller или MVC) [8], [9], [10] также называемая для Web – приложений в некоторых источниках Модель 2 (как развитие концепции шаблонов – Модели 1).
В данной архитектуре выделяются три основные подсистемы:
Модель данных – подсистема, представляющая уровень логических объектов, их взаимодействие, основную функциональность системы.
Вид или подсистема отображения – отвечает за отображение модели данных в удобном для пользователя виде, обычно графический пользовательский интерфейс.
Подсистема управления – обрабатывает события, получаемые от пользователя и других частей системы, инициирует действия и изменения в модели.
Архитектура широко распространена и применяется в таких популярных системах построения пользовательского интерфейса как Microsoft Foundation Classes (MFC) и Windows Forms для операционных систем Windows, Java Swing для Java платформы, X Window System и Motif для UNIX систем. Несмотря на несомненные достоинства архитектуры, такие как разделение данных и их представления, удобство в разработке и возможности изменения отдельных частей системы без изменения остальных, она является непростой для реализации в Web – системах, по упомянутым выше причинам. Особенную сложность представляет система управления, поскольку инициатором и получателем событий и команд являются различные программы, соединенные негарантированной линий связи. Тем не менее удобство данной архитектуры заставляет искать пути ее наилучшей адаптации к разработке Web приложений.
В качестве реализации подсистем модели и отображения обычно предлагается сочетание шаблонов страниц с отдельным программным кодом, при котором работа программиста и дизайнера может быть максимально разделена. При построении на шаблонной технологии, например PHP, они позволяют компоновать на одной странице различные шаблонные блоки, а также вводить их содержимое в административном интерфейсе. При этом взаимное расположение блоков, основной дизайн заложены в так называемых темах сайта и не могут быть гибко изменены, хотя и позволяют проводить самостоятельную разработку. При использовании более гибких технологий (в основном, по изложенным выше причинам, выбирается Java Servlets) ядро системы позволяет определять шаблоны и программные компоненты, заполняющие содержимое, обеспечивает их взаимодействие. В наиболее высокоуровневых моделях строится объектная модель сайта, его страниц, участков страниц. К сожалению в подобных системах визуальное построение страниц и оперативное управление через Web – интерфейс отсутствуют, поскольку системы ориентированы на разработку на сервере. В качестве подсистемы управления присутствует объектная модель, позволяющая взаимодействовать с пользователем в режиме, напоминающем обычную интерактивную модель с событиями, обработчиками, передачей управления, и т.д.
Из-за упомянутых выше преимуществ основой для мощных систем построения и управления сайтами часто служит платформа Java Servlets, иногда в сочетании с возможностью использовать страницы JSP. Примерами таких технологий служат Turbine [5], Velocity [4], Struts [3]. Отметим, что все они разрабатываются в рамках проекта Jakarta разработчиков Apache’s Group, обладают открытым исходным кодом и являются бесплатными.
Рассмотрим в первую очередь Velocity и Turbine. Необходимо заметить, что это не взаимоисключающие, а дополняющие друг друга технологии, и их совместное использование является эффективным. Velocity – это система построения текстов на основе шаблонов. Она может применяться не только для создания Web – сайтов, но и других подобных задач, например автоматической генерации программной документации. Velocity позволяет создавать шаблоны страниц и заполнять их автоматически с помощью понятия контекста – объекта, общего для всей среды исполнения и несущего все данные, используемые в шаблонах. Новшеством технологии Velocity явилось понятие контекста, позднее вошедшее в спецификацию сервлетов. Таким образом Velocity является мощной реализацией подсистемы отображения, предоставляя возможности взаимодействия с внешними подсистемами модели данных. Технология Turbine является реализацией архитектуры Модель – Вид – Управление, расширяя ее до следующих сущностей: Действие (Action), Размещение (Layout), Навигация (Navigation), Экран (Screen), Страница (Page). Структура сущностей Turbine.
В роли управляющего элемента служит сервлет Turbine, который проводит обработку запросов и обращается к остальным сущностям. Объект Action является указанием на класс, обрабатывающий форму. При получении запроса от такой формы Turbine делает вызов соответствующего класса. Построение страниц затем делается на основе объекта Page, содержащего необходимую информацию о странице, такую как Layout – расположение элементов на странице, шаблон высокого уровня, Navigation – блоки навигации по сайту, включаемые в страницу, Screen – основное тело страницы, содержащее информационную часть. Очевидно, что использование Velocity уместно при генерации кода, т.е. в объекте Screen. Такая комбинация систем позволяет хранить шаблоны страниц и динамически заполнять их при обработке запроса с помощью контекста. Модель, используемая Turbine, обладает значительной гибкостью, поскольку предполагает разделение обработчиков данных и генераторов страниц. Тем не менее, предлагаемая архитектура не является логически обоснованной. Выделение блока навигации в отдельную сущность не представляется целесообразным, поскольку таких блоков может существовать большое количество, как типовых, так и специфических для сайта. А его отделение от объекта представления Screen накладывает существенные ограничения на дизайн. Система является технологией, предназначенной для разработчиков, но не имеет среды разработки, предлагая использовать стандартные средства разработки на языке Java. В целом можно отметить достаточно удачную простую архитектуру системы, но отсутствие удобных средств разработки и какой либо визуализации.
Еще одной системой управления сайтами, основанной на Java Servlets и разрабатываемой в рамках проекта Jakarta, является популярная система разработки Struts. Технология Struts не требует полного подчинения сайта, она может использоваться совместно с другими страницами. В целом Struts состоит из двух основных частей – обработчика запросов, используемого вместе со Struts API, и библиотек тэгов JSP. Сайт может быть построен, используя классический подход JSP, с использованием тэгов Struts в качестве полезных утилит. Однако при написании серьезных Web – систем становится необходимым использовать диспетчер запросов. Это сервлет – обработчик, который анализирует поступающие запросы, и на основании этих данных и конфигурации Struts передает запрос уже конкретному обработчику. Правила конфигурации достаточно гибки, и запросы могут передаваться страницам, выполненным в идеологии Struts или сторонним. Для облегчения работы с важной частью Web – приложений – формами Struts поддерживает специальный Form Bean, позволяющий легко писать обработчик форм, а также наполнять их содержимым. Реализация адаптированного подхода Модель – Вид – Управление) осуществляется следующим образом: в качестве управляющего компонента работает сервлет – диспетчер Struts, осуществляющий необходимые вызовы. В качестве модели и для реализации бизнес логики используются классы действий (Action classes), вызываемые диспетчером. Для представления данных используются страницы JSP, вызов которым передается от диспетчера, и которые используют библиотеки тэгов. Также особое внимание в Struts уделяется использованию JavaBeans для отделения дизайна от логики. Несмотря на то, что, во многом Struts является более набором взаимосвязанных утилит, чем целостной системой нельзя не признать ее удачную архитектуру и огромную гибкость в использовании. Технология предоставляет массу полезных инструментов для разработчика, но не имеет своей среды разработки и средств визуализации. Таким образом, она становится удачным связующим звеном между необходимыми диспетчерскими обработками сервлетов и шаблонами JSP, реализуя архитектуру Модель – Вид – Управление.
Таким образом, поиск оптимальной реализации архитектуры Модель – Вид – Управление для систем управления сайтами является актуальным и находит свое применение в различных существующих системах построения сайтов.
Заключение
В предыдущих разделах были проанализированы подходы к системам управления сайтами, рассмотрены их достоинства и недостатки. Таких систем существует достаточно большое количество, наиболее популярные из них также были рассмотрены выше. Однако, ни одна из систем не получила по настоящему массового применения, поскольку не удовлетворяет всей совокупности требований, предъявляемых к системам управления сайтами. Попытки создать более совершенную систему продолжаются как со стороны групп разработчиков бесплатного ПО, так и со стороны коммерческих компаний.
Список литературы
Fernandez M, Florescu D., Kang J., Levy A., Siciu D. STRUDEL: A Web Site Management System. AT&T Labs
Mendelzon A., Milo T. Formal Models of Web Queries. Information Systems, Vol. 23, No.8, pp. 615-637, 1998
Holloway T. Struts: a Solid Web-App Framework.
(http://www.fawcette.com/javapro/2002_04/magazine/features/tholloway/default_pf.asp)
Руководство разработчика Velocity. (http://jakarta.apache.org/velocity/developer-guide.html)
Спецификация технологии Turbine. ( http://jakarta.apache.org/turbine/fsd.html)
Buraglia Angela C., Chalnick Leon, Forta Ben, Weiss Nate. ColdFusion MX Web Application Construction Kit, Fifth Edition. Macromedia Press; 5 edition, 2002.
Брукс К., Басби С., Джезирски Э., Макмен А. Руководство по архитектуре доступа к данным на платформе .NET (http://www.microsoft.com/rus/msdn/activ/article/dot_net_data_access_architecture/)
Johnson M., Singh I., Stearns B. Designing Enterprise Applications with the J2EE Platform, Second Edition. Sun Microsystems, 2002.
Model-View-Controller. Microsoft Patterns & Practices. (http://msdn.microsoft.com/library/en-us/dnpatterns/html/DesMVC.asp)
Gamma Erich, Helm Richard, Johnson Ralph, Vlissides John. Design Patterns. Addison-Wesley Professional, 1995.
Для подготовки данной работы были использованы материалы с сайта http://www.sciteclibrary.ru