"Журнал «Компьютерра» №32 от 06 сентября 2005 года" - читать интересную книгу автора (Компьютерра Журнал 604)

ТЕМА НОМЕРА: На том стоим


Всемирная сеть Internet существует с 1961 года. И уже в те времена начались эксперименты по индексированию и выборке данных, но удовлетворительные результаты появились далеко не сразу. Только в 1991 году Поль Линдер (Paul Linder) и Марк П. Маккэхил (Mark P. McCahill) из университета Миннесоты создали технологию Gopher, которая стала непосредственной предшественницей WWW. В 1992 году была создана всемирная информационная сеть World Wide Web, или просто Web (паутина). Ее основой является концепция гипертекста, сформулированная Тедом Нельсоном еще в 1974 году.

Вместе с вебом пришли три новые технологии:

HTML - язык разметки гипертекста, который служит для создания веб-страниц.

HTTP - протокол передачи гипертекста, предназначенный для пересылки веб-страниц с сервера пользователям.

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

HTML вырос из более сложного языка - SGML (Single Generalized Markup Language).


Необходимость CMS

В начале развития WWW подавляющее большинство сайтов были статическими, так как страниц было немного. Однако по мере роста количества страниц и WWW в целом все больше времени при обновлении страниц уходило на рутинную HTML-разметку (помимо добавления новой HTML-страницы требовалось вставить ссылки на других страницах). Обновление и даже мелкая корректировка внешнего представления страниц все чаще выливались в весьма сложное мероприятие. Постоянные публикации статей и новостей требовали кропотливого труда, а такие средства, как голосования, гостевые книги, доски объявлений, вообще находились за гранью возможного. Как следствие, назрела необходимость автоматизации представления данных пользователю. История управления контентом началась с управления документами в традиционном смысле этого слова, то есть обычными текстовыми файлами. По мере развития определения «документ» системы управления документами стали называть системами управления контентом или содержимым веб-ресурса. Само определение «управление контентом» поначалу прочно ассоциировалось с процессом публикации и обновления информации на веб-сайтах - требовалась технология, позволяющая следить за ее актуальностью. Применительно к организациям (фабрикам, заводам), оперирующим огромным количеством информации, уместно говорить уже о системах управления информационными ресурсами предприятия (Enterprise Content Management). В результате термин «Content management» расширился: им стали обозначать управление не только информацией на сайте, но и всеми разрозненными и разнообразными фрагментами корпоративной информации. В энциклопедии Wikipedia системой управления контентом названа система, применяемая для организации и упрощения совместного создания информации (проще говоря - пополнения базы данных группой лиц).


Сайт WebMastak.comсуществует около года, однако на нем можно найти немало полезных статей по веб-программированию на PHP, Perl и несколько сотен (!) о JavaScript, а также материалы по использованию таких интернет-технологий, как SSI и XML. Еще здесь есть такие интересные разделы, как «Оптимизация и продвижение сайта в Сети» и «Настройка веб-сервера Apache».

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

Наверняка пригодится вам и небольшая, но активно пополняемая коллекция скриптов на PHP и Perl


Структура CMS

Функции, выполняемые системами управления содержимым, можно разделить на три основные группы:

Добавление - предоставление авторам удобных и привычных средств создания (добавления) контента на ресурс.

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

Редактирование данных, содержащихся на сайте.

CMS, как правило, обеспечивают хранение данных в едином репозитории (хранилище).

Существует несколько моделей, по которым строятся системы управления:

Модульная модель. Такие CMS представляют собой набор отдельных суб-CMS, каждая из которых управляет своим набором типов данных. Модули независимы и полностью отвечают за работу с документами данного типа. Зачастую такой принцип организации является самым удачным, так как расширять функциональность можно за счет добавления нового модуля, замены или редактирования существующего кода. Системы на основе описываемой модели наиболее популярны благодаря своей простоте. В качестве примера можно упомянуть PHPNuke и XOOPS.

Объектная модель. CMS этого типа работают с классами и объектами. Классы определяют структуру данных и набор атрибутов (свойств). Объект является экземпляром класса, его задача - хранить в себе реальные данные. Объект может наследовать свойства, содержание и поведение объектов, которые в них содержатся.

Существуют и другие модели, однако они распространены в гораздо меньшей степени.

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

CMS также различаются по месту хранения сгенерированных страниц:

Динамические. Страница формируется динамически, как только приходит запрос. Это самый ресурсоемкий вариант, поскольку движок работает постоянно. Если посетителей очень много, то возможно чрезмерное использование ресурсов сервера. Главное преимущество подобной схемы - каждый посетитель получает самый свежий вариант контента. Кроме того, возможна индивидуальная настройка страницы под каждого пользователя.

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

Генерация статических страниц на основе динамических данных. При обновлении CMS перегенерирует все связанные страницы. Поэтому при запросе выдается уже сформированная статическая (возможно, собранная с помощью SSI[Server-Side Includes - включения на стороне сервера, то есть в страничку вставляются динамически сгенерированные сервером данные (например, IP-адрес посетителя и др.)]) страница.

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


Весьма и весьма полезен для новичков ресурс «Постройка.ру». Тут подробно рассказывается о создании сайтов, немало статей на тему «HTML», «Графика» и «Дизайн». Хорошо известен в Сети справочник, выходящий на этом сайте: «HTML: шаг за шагом». А еще есть такой раздел, как «Справочная»: определения различных терминов, связанных с Интернетом, разбиты по алфавиту. Самым интересным местом на «Постройке.ру» (по крайней мере, для меня) является форум. Здесь обсуждаются материалы, опубликованные на сайте, и не только. Кстати, оставив там ссылку на свой сайт, я в за несколько дней получил больше десятка отзывов.


Классификация CMS

За несколько лет системы управления содержимым веб-ресурсов значительно усовершенствовались. Их можно классифицировать по областям применения.

Порталы. Используются для информационных ресурсов, основной целью ставят максимальное упрощение публикации статей и новостей. Могут включать в себя нижеперечисленные типы CMS как самостоятельные модули. Наиболее известные представители данного класса: AngelineCMS, Bes-cms, CoolPHP, CPG-Nuke, вебZE, Xaraya, xNuke, XOOPS и др.

Движки без SQL. Это ответвление в разработке CMS развито относительно слабо, так как использование в качестве хранилища информации файлов вместо таблиц базы данных сопряжено с множеством труднорешаемых проблем (таких, как одновременная запись в один файл несколькими копиями скрипта)[Скрипт (от англ. Script) есть интерпретируемая (то есть не компилируемая заранее) программа]. Достоинство этих CMS - в доступности для модификации контента и возможности размещения на бесплатных хостингах[Хостинг (от англ. Hosting) - сервер сети, предоставляющий услуги размещения сайтов]. Есть несколько реализаций данной идеи: Cute News, DeeLight CMS, Progressive, SAPID.

Блог[Происходит от англ. weblog. То есть weblog - blog - блог. Русский термин - «сетевой дневник»] - это сайт, на котором находятся личные заметки автора. В основном заметками являются ссылки на сайты, которые кажутся владельцу ресурса наиболее интересными, и комментарии к ним. Блог может содержать не только ссылки, но и просто электронный дневник пользователя.

К этой категории можно отнести следующие CMS: b2evolution, bBlog, BLOG:CMS, MyPHPblog, Nucleus, pLog, pMachine Free, Serendipity, Textpattern, WordPress, XHP.

Уже ведутся дискуссии о том, кто же влиятельнее: СМИ или блоги? Например, в Штатах выходит телепередача о блогах.

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

К форумам, достойным внимания, можно причислить FUDforum, openBB, Phorum, phpBB, PunBB, W-Agora, XMB, Zorum, ExBB, IPB, vBulletin.

Магазины. К магазинам отнесем любой сайт, с которого можно заказать какой-либо товар. В данном случае в определение «товара» может входить абсолютно все, включая время доступа в Интернет, минуты сотовой связи. Абсолютное большинство интернет-магазинов являются нелегальными[Вопросы - к автору. - Прим. ред].

CMS, позволяющие создать виртуальный магазин: MyMarket, osc2nuke, osCommerce, Zen Cart.

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

Как правило, пользуются следующими CMS: dotProject, eGroupWare, MoreGroupware, phpCollab, PHProjekt.

Обучение (e-Learning) - дистанционная форма обучения с использованием Интернета. Онлайновая форма обучения уже не один год является «маяком», на который ориентируются образовательные системы разных стран мира. Главным стратегическим направлением является быстрое обновление знаний и эффективное использование информации.

Таких систем немного: ATutor, Claroline, LogiCampus, Moodle, Segue, Site@School.

Базы знаний (KnowledgeBase) позволяют накапливать опыт множества разработчиков, работающих (или работавших) в какой-либо одной. Каждая такая база знаний имеет свою специфичную структуру, поэтому никаких общих решений на данный момент не предложено. Самая известная из существующих баз знаний - RFC[Request For Comment - запрос на комментирование. Обычно описание работы с каким-либо протоколом и т. п. Публикуется в виде небольшого документа - как правило, с примером программы].

Биллинг (Billing). Программное обеспечение, позволяющее провайдерам[Провайдер (от англ. Provider) - организация, предоставляющая какие-либо услуги (как правило, информационные)] и реселлерам[Реселлер (от англ. Reseller) - организация или частное лицо, занимающееся продажей услуг крупных компаний рядовым потребителям] работать со счетами клиентов. Такие CMS являются неотъемлемой частью крупной системы учета потребления услуг пользователями. Задача же CMS данной категории - в отображении информации о предоставленных услугах, подключении новых услуг, изменении текущих параметров, приеме платежей и т. п. Часто такие системы пишутся своими силами. Для примера можно привести биллинг-панель RuWEB[Помимо нее автор имел удовольствие работать с net.ru, agava.ru, IPI.CONTROL, CLX.ru, Spaceвеб, - ни одна фирма не может порадовать гибкими тарифными планами]. В ней создано огромное количество тарифных планов, позволяющих платить только за те параметры хостинга (трафик, место на жестком диске, MySQL, PHP, Perl…), которые используются в полном объеме.

Администраторская панель хостинга. К этому классу относятся такие продукты, как Direct Admin и Control Panel. Немало хостинг-провайдеров стараются написать панель управления для пользователя хостинга своими силами, однако ни одно подобное решение, насколько мне известно, так и не смогло по возможностям и эргономике хоть немного приблизится к вышеупомянутым системам. Например, админпанель хостинга net.ru дает лишь простейшие функции управления и способна показать только то, что может сделать администратор за день работы. Самоделки.

Системы управления бывают свободно-распространяемыми и платными. Вместе с последними в подавляющем большинстве случаев вы получаете сопровождение и поддержку.

Платные системы можно разделить на три ценовые категории:

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

К среднему ценовому диапазону относятся системы, созданные под конкретного заказчика.

Системы, созданные гигантами разработки - Microsoft и др.


Тем, кто интересуется системами управления контентом, рекомендую посетить сайт «CMS Обзор», посвященный CMS, их использованию и настройке. Описаны основные стандарты, которым должна соответствовать CMS, сравниваются платные CMS от различных разработчиков. Весьма любопытный форум. Для сведения: аналогичный англоязычный ресурс располагается по адресу www.cmswatch.com


Текущее состояние рынка CMS

Развитие чего-либо всегда определяется потребностями рынка. Состояние же рынка CMS на данный момент таково, что нет серьезной конкуренции из-за ненасыщенности рынка. Конкурентная борьба между производителями систем практически отсутствует. Абсолютное большинство мелких и средних веб-разработчиков предпочитают иметь пусть и примитивную, но свою CMS, нежели пользоваться чужими, более продвинутыми разработками. Поэтому в России ни одна система пока не может похвастаться долей рынка хотя бы в десяток процентов. К тому же до сих пор не проведено практически ни одного серьезного анализа рынка и его характеристик. Многие публикации являются скрытой рекламой какой-либо CMS. Подавляющее большинство существующих CMS несовместимы друг с другом, то есть нет возможности экспорта/импорта данных из одной системы в другую, даже через промежуточные форматы данных; несовместимы и модули разных систем. Таким образом, при желании сменить CMS, не меняя оформления, придется заново программировать интерфейс. Диапазон цен на рассматриваемые программные продукты довольно широк - от $50 до $10000, а порой и выше. То есть за долгие годы развития так и не была сформирована даже ценовая политика большинства производителей.


***

Резюме: оборот финансовых средств на рынке немал уже сейчас, а через два-три года (когда рынок насытится) он будет огромен. Работы еще непочатый край.


Habitat. Личный опыт

Одна из систем, разрабатывавшаяся под конкретного заказчика, была создана автором статьи около двух с половиной лет назад. Называется она Habitat. Во всех случаях, по воле дизайнера, приходилось систему адаптировать под идеи каждого нового ресурса. В конце концов, я понял, что мешает существующим системам становиться комфортабельнее. Неоднократные консультации с владельцами сайтов на основе Habitat по теме сервисных возможностей показали, что далеко не все можно реализовать на базе существующих CMS. Через некоторое время был предложен проект Habitat II. В нем как основная была сформулирована идея объектно-ориентированного построения шаблонов страниц. Внешние представления внутри системы представляет собой иерархическую структуру, состоящую из компонентов, являющихся экземплярами классов (которые описываются с помощью XML и помещаются в систему). Информация из базы данных вставляется в шаблоны с помощью источников данных (константы, переменные, DataAware). Вышеописанная концепция формирования страниц сайта позволяет разрабатывать сайт дизайнеру, не имеющему навыков верстальщика и веб-программиста, на основе уже имеющихся шаблонов, уточняя по желанию детали оформления.


Будущее CMS

Очевидно, что без объединения компаний-разработчиков или покупки более мелких специализированных компаний формирование рынка невозможно.

Ниша систем высокой сложности будет занята несколькими крупными компаниями, которые уже в ней присутствуют, включая зарубежных производителей - Microsoft, IBM, Vignette и т. д. Стоимость таких систем, скорее всего, составит от одной до десяти тысяч долларов. Объектами применения CMS данного класса будут не столько веб-сайты, сколько системы документооборота, онлайн-СМИ, различного рода корпоративные порталы.

Нишу средних и малых систем займут продукты некрупных, но авторитетных агентств и бесплатные CMS.

Ориентируясь на растущие потребности предприятий, лидеры сферы разработки CMS, естественно, выходят за рамки управления содержимым веб-сайтов и управления документами.

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