Головна сторінка Випадкова сторінка КАТЕГОРІЇ: АвтомобіліБіологіяБудівництвоВідпочинок і туризмГеографіяДім і садЕкологіяЕкономікаЕлектронікаІноземні мовиІнформатикаІншеІсторіяКультураЛітератураМатематикаМедицинаМеталлургіяМеханікаОсвітаОхорона праціПедагогікаПолітикаПравоПсихологіяРелігіяСоціологіяСпортФізикаФілософіяФінансиХімія |
Технічні характеристикиДата добавления: 2014-12-06; просмотров: 714
Использование сookies удобно как для программистов, так и для пользователей. Пользователи выигрывают за счет того, что им не приходится каждый раз заново вводить информацию о себе, а программистам сookies помогают легко и надежно сохранять информацию о пользователях. Определение Cookies - это текстовые строки, хранящиеся на стороне клиента, и содержащие пары "имя-значение", с которыми связан URL, по которому броузер определяет нужно ли посылать cookies на сервер. Установка cookies Установка cookies производится с помощью функции setcookie: setcookie Синтаксис: bool setcookie (string name [, string value [, int expire [, string path [, string domain [, int secure]]]]]) Эта функция имеет следующие аргументы: name - имя устанавливаемого cookie; value - значение, хранящееся в cookie с именем $name; expire - время в секундах с начала эпохи, по истечение которого текущий cookie становится недейтвительным; path - путь, по которому доступен cookie; domain - домен, из которого доступен cookie; secure - директива, определяющая, доступен ли cookie не по запросу HTPPS. По умолчанию эта директива имеет значение 0, что означает возможность доступа к cookie по обычному запросу HTTP. Пример простого приложения с cookies Давайте создадим простой сценарий, подсчитывающий при помощи cookies количество обращений посетителя к странице. В cookie с именем counter будет храниться число посещений страницы пользователем: <? $counter++; setcookie("counter",$counter); echo("Вы посетили эту страницу $counter раз"); ?> Результат выполнения сценария на рис.: При работе с cookies необходимо учитывать важный момент, заключающийся в том, что cookie надо обязательно устанавливать перед отправкой в броузер каких-либо заголовков, поскольку сами cookies устанавливаются в виде заголовков. Поэтому если установить cookies после какого-либо текста, отправляемого в броузер, то возникнет ошибочная ситуация. Рассмотрим этот вопрос подробнее, для чего модифицируем код, приведенный в листинге, поместив перед установкой cookie текст: Если здесь поместить текст, то возникнет ошибка, так как будет послан заголовок Content-type: text/html. <? $counter++; setcookie("counter",$counter); echo("Вы посетили эту страницу $counter раз"); ?> Как видно из рис., при выполнении этого сценария выводится сообщение об ошибке: Заметим, что в этих листингах мы обращаемся к переменной $counter, в которой хранится значение cookie, как к глобальной, что требует наличия включенной директивыregister_globals. Если эта директива отключена, то значение, хранящееся в cookie можно получить через глобальный массив $_COOKIE["name"]: <? $_COOKIE['counter']++; setcookie("counter",$_COOKIE['counter']); echo 'Вы посетили эту страницу '.$_COOKIE['counter'].' раз'; ?> Поскольку некоторые пользователи отключают cookie в настройках своих браузеров, для корректной работы, в приложение, использующее cookies, необходимо помещать код, проверяющий включены ли cookies у посетителя, и, если нет, то сообщающий ему о необходимости включить cookie: <? if(!$cookie) { /* посылаем заголовок переадресации на страницу, с которой будет предпринята попытка установить cookie */ header("Location: $PHP_SELF?cookie=1"); /* устанавливаем cookie с именем "test" */ setcookie("test","1"); } else { if(!$test) { echo("Для корректной работы приложения необходимо включить cookies"); } else { /* cookie включены, переходим на нужную страницу */ header("Location: http://localhost/test1.php"); } } ?> Установка срока годности cookies По умолчанию cookies устанавливаются на один сеанс работы с броузером, однако можно задать для них более продолжительный срок существования. Это очень удобное и полезное свойство, поскольку в этом случае пользователю не нужно предоставлять свои данные вновь при каждом посещении сайта. Как уже говорилось, срок годности устанавливается в секундах относительно начала эпохи. В PHP существуют функции time и mktime для работы с датой и временем, позволяющие переводить текущее время в количество секунд с начала эпохи. Функция time просто переводит текущее системное время в количество секунд, прошедших с начала эпохи: time Синтаксис: time(); Усовершенствованным вариантом функции time является функция mktime: mktime Синтаксис: int mktime ([int hour [, int minute [, int second [, int month [, int day [, int year [, int is_dst]]]]]]]) Аргумент is_dst этой функции определяет, попадает ли эта дата в период летнего времени и может принимать следующие значения: -1 (По умолчанию. Означает, что свойство не задано); 0 (Временной интервал не приходится на период летнего времени); 1 (Временной интервал приходится на период летнего времени). Примеры установки сроки годности cookies: <? /* этот cookie действителен в течение 10 мин после создания */ setcookie("name", $value, time() + 600); /* действие этого cookie прекращается в полночь 25 января 2010 года */ setcookie("name", $value, mktime(0,0,0,01,25,2010)); /* действие этого cookie прекращается в 18.00 25 января 2010 года */ setcookie("name", $value, mktime(18,0,0,01,25,2010)); ?> Удаление cookie Удалить cookie просто. Для этого надо вызвать функцию setcookie и передать ей имя того cookie, который подлежит удалению: setcookie("name"); Другие установленные cookie при этом не удаляются. Проблемы безопасности, связанные с cookies Иногда в cookies приходится хранить конфиденциальные данные, и в этом случае разработчик должен позаботиться о том, чтобы информация хранящееся в cookie не была передана третьим лицам. Существует несколько методов защиты информации, хранящейся в cookie: установка области видимости cookies; шифрование; ограничение доступа для доменов; отправка cookies по защищенному запросу. Наилучшим решением является комплексное применение всех этих способов. Установка области видимости cookie Поскольку, по умолчанию, доступ к cookie происходит из корневого каталога, это может создать "дыры" в системе защиты, так как cookies становятся доступными в любом подкаталоге этого каталога. Ограничить доступ к cookies для всех страниц, кроме расположенных в конкретном каталоге, к примеру, /web, можно следующим образом: setcookie("name", $value, "/web/"); Однако и в этом случае, к примеру, каталоги /web/index.php, /web1/page.html и т. д. будут удовлетворять этому ограничению. Если такое положение также является нежелательным, можно ограничить область видимости cookies до конкретной страницы: setcookie("name", $value, "/web/index.php"); Однако и такой способ в полной мере не решает проблему, так как в этом случае доступ к информации, содержащейся в cookie, может получить, к примеру, скрипт /web/index.php-script/anti_cookie.php. Поэтому появляется необходимость в шифровании. Шифрование Применить шифрование к cookies можно разными способами, рассмотрим один из них: <? // создаем вектор начального состояния для шифрования $vector = mcrypt_create_iv(mcrypt_get_iv_size(MCRYPT_CAST_256, MCRYPT_MODE_CFB), MCRYPT_RAND); $key = "qwe233jk312jx813893xk312"; // ключ для расшифрования $cook_name = "maks"; $cipher = mcrypt_encrypt(MCRYPT_CAST_256, $key, $cook_name, MCRYPT_MODE_CFB, $vector); setcookie("username", $cipher, "/decrypt.php"); ?> Как видно из листинга 10.13, расшифровка cookie проводится при помощи скрипта decrypt.php, код которого приведен ниже: <? // вектор начального состояния остается неизменным $vector = mcrypt_create_iv(mcrypt_get_iv_size(MCRYPT_CAST_256, MCRYPT_MODE_CFB), MCRYPT_RAND); $key = "qwe233jk312jx813893xk312"; $decrypt_name = mcrypt_ decrypt(MCRYPT_CAST_256, $key, $username, MCRYPT_MODE_CFB, $vector); echo("$decrypt_name, мы рады видеть вас на нашей страничке!"); ?> Ограничение доступа для доменов Для дополнительной безопасности, список доменов, имеющих доступ к cookies, должен быть ограничен. Это можно сделать при помощи следующего кода: setcookie("name", $value, "/web/index.php", ".server.com"); При таком ограничении заданной области видимости будут соответствовать домены с именами server.com, myservser.com, php.server.com и т. д., поскольку проверка на допустимость области видимости домена осуществляется по принципу концевого соответствия. Отправка cookies по защищенному запросу Не является излишним для cookie, хранящему секретные данные, разрешить отвечать только на защищенные запросы HTTP, так как в этом случае значительно затрудняется перехват данных, которыми обмениваются клиент и сервер. Для обеспечения защищенного соединения, функции setcookie передается шестой параметр со значением, равным 1: setcookie("name", $value, time() + 600, "/web/", ".server.com", 1); Настройка безопасности php.ini На виртуальном хостинге обычным пользователям не разрешается редактирование php.ini, однако вы можете добавлять локальные php.ini в нужные директории сайта. При этом php.ini в корневой директории вашего сайта будет влиять на все вложенные. Прежде чем приступать к настройке, проверьте позволяет ли ваш хостинг использовать локальные php.ini, создав его и разместив в нужную папку. PHP disable_functions Директива disable_functions используется для отключения не нужных функций. С ее помощью можно отключить такие функции как shell_exec и phpinfo, на которые в первую очередь и нацелены злоумышленники при первичном анализе сайта. disable_functions = show_source, system, shell_exec, passthru, exec, phpinfo, popen, proc_open PHP open_basedir Данная директива php.ini позволяет или запрещает открывать определенные файлы вашего каталога. Например, можно ограничить доступ к каталогу администратора: open_basedir = /home/users/you/public_html/admin/ PHP magic_quotes_gpc Данная настройка позволяет отключить или включить использование "магических кавычек", которые используются для экранирования специальных символов. Обычно рекомендуется включать данную директиву. magic_quotes_gpc = 1 PHP safe_mode Safe_mode в PHP нужно отключить, так как его использования не рекомендуется. Даже на официальном сайте PHP написано о несовершенности данной опции, вследствие чего она не только не помогала, но даже способствовала взлому. safe_mode = 0 PHP register_globals Одна из самых неудобных директив созданных разработчиками, которая регистрирует все глобальные переменные GET, POST, COOKIE. Ее отключение является обязательным. Более подробно об это написано тут. register_globals = 0 PHP allow_url_fopen Отключите allow_url_fopen, так как эта директива позволяет получить доступ через URL к некоторым объектам, например, файлам. По умолчанию оболочки предназначены для доступа к удаленным файлам с помощью FTP или HTTP-протоколов. Некоторые расширения, такая, как Zlib, может использовать дополнительные оболочки. allow_url_fopen = 0 Для мощных проектов в сети нужна аренда сервера для бизнеса. Меняя виртуальный хостинг на выделенный сервер вы получаете множество преимуществ, одно из которых самостоятельная настройка безопасности php.ini.
Лекция № 11
Систе́ма управле́ния содержи́мым (конте́нтом) (англ. Content management system, CMS) — информационная система или компьютерная программа, используемая для обеспечения и организации совместного процесса создания, редактирования и управления контентом(то есть содержимым).
В системе управления содержимым могут находиться самые различные данные: документы, фильмы, фотографии, номера телефонов, научные данные и так далее. Такая система часто используется для хранения, управления, пересмотра и публикации документации. Контроль версий является одним из основных её преимуществ, когда содержимое изменяется группой лиц. В общем случае системы управления содержимым делятся на: Систему управления содержания масштаба предприятия (англ. Enterprise Content Management System системы управления содержанием предприятий) Система управления веб-содержимым (англ. Web Content Management System) В силу того, что ECMS имеют глубокую внутреннюю классификацию по предметным областям (HRM, DMS, CRM, ERP и т. д.), термин CMS заместил собой WCMS, превратившись в синоним системы управления сайтами. Подобные CMS позволяют управлять текстовым и графическим наполнением веб-сайта, предоставляя пользователю интерфейс для работы с содержимым сайта, удобные инструменты хранения и публикации информации, автоматизируя процессы размещения информации в базах данных и её выдачи в HTML. Существует множество готовых систем управления содержимым сайта, в том числе и бесплатных. Их можно разделить на три типа по способу работы: Генерация страниц по запросу. Системы такого типа работают на основе связки «Модуль редактирования → База данных → Модуль представления». Модуль представления генерирует страницу с содержанием при запросе на него, на основе информации из базы данных. Информация в базе данных изменяется с помощью модуля редактирования. Страницы заново создаются сервером при каждом запросе, что в свою очередь создаёт дополнительную нагрузку на системные ресурсы. Нагрузка может быть многократно снижена при использовании средств кэширования, которые имеются в современных веб-серверах. Генерация страниц при редактировании. Системы этого типа суть программы для редактирования страниц, которые при внесении изменений в содержание сайта создают набор статических страниц. При таком способе в жертву приносится интерактивностьмежду посетителем и содержимым сайта. Смешанный тип. Как понятно из названия, сочетает в себе преимущества первых двух. Может быть реализован путём кэширования — модуль представления генерирует страницу один раз, в дальнейшем она в несколько раз быстрее подгружается из кэша. Кэш может обновляться как автоматически, по истечении некоторого срока времени или при внесении изменений в определённые разделы сайта, так и вручную по команде администратора. Другой подход — сохранение определённых информационных блоков на этапе редактирования сайта и сборка страницы из этих блоков при запросе соответствующей страницы пользователем. Система управления — программа, предоставляющая инструменты для добавления, редактирования, удаления информации на сайте. Существуют разнообразные системы управления сайтом, среди которых встречаются платные и бесплатные, построенные по разным технологиям. Каждый сайт имеет панель управления, которая является только частью всей программы, но достаточна для управления им. Термин контент-менеджер обозначает род профессиональной деятельности — редактор сайта. Большая часть современных систем управления содержимым реализуется в виде визуального (WYSIWYG) редактора — программы, которая создаёт HTML-код из специальной упрощённой разметки, позволяющей пользователю проще форматировать текст. Словосочетание «система управления контентом» сегодня у всех на слуху. Рынок подобных продуктов растет, но до сих пор в данной области нет единых стандартов, в том числе, и на терминологию. Что же представляют собой подобные системы и какую функциональность они обеспечивают? Рынок систем категории CMS (content management system) достаточно бурно развивается, но единых стандартов в этой области, в том числе на терминологию, еще нет. Английское слово content означает «нечто, содержащееся внутри» и применительно к письменным работам обычно входит в словосочетание table of contents — содержание, перечень разделов (скажем, книги). Отличительная черта контента состоит в том, что он конструируется из отдельных кусочков. Однако при переводе термина content на русский язык произошел забавный казус. Дело в том, что английский вариант этого слова означает «содержание» только в тех случаях, когда ударение ставится на его первый слог. В противном же случае (а мы обычно так и произносим) слово content является глаголом со значением «удовлетворять». Бытует мнение, что в ИТ данный термин стали использовать, чтобы обобщить в понятии «документ» такие не типичные ранее данные, как видео, аудио и мультимедиа. Такое утверждение представляется не совсем корректным: документ — это форма передачи информации, а контент — собственно информация, поэтому ставить их на один уровень не совсем правильно. История управления контентом началась с управления документами в традиционном смысле этого слова, т.е. текстовыми файлами. По мере развития понятия «документ», системы управления документами стали называть системами управления контентом. Почему? Считается, что это позволяет подчеркнуть способность таких систем управлять информацией независимо от формы ее представления, а также отделить информацию-контент от документа-формы. Однако абстрактно управлять информацией невозможно — она обязательно должна быть представлена в какой-либо форме. Пытаясь управлять контентом, мы неизбежно приходим к управлению документами. Системы управления контентом, действительно, «научились» разделять управление документами (хранение, изменение и т.п.) и их представление конечному пользователю. Но они все-таки управляют документами в какой-то форме, а не информацией. Само понятие «управление контентом» первоначально прочно ассоциировалось с процессом публикации и обновления информации на Web-сайтах — требовалась технология, позволяющая следить за ее актуальностью. Поэтому в качестве синонима content management часто используют термин Web content management. Применительно к организациям, оперирующим огромным количеством информации, уместно говорить уже о системах управления информационными ресурсами предприятия (enterprise content management, ECM). В результате термин content management расширился: им стали обозначать управление не только информацией на сайте, но и всеми разрозненными и разнообразными фрагментами корпоративной информации. Есть и другие определения. Скажем, в энциклопедии Wikipedia системой управления контентом названа система, применяемая для организации и упрощения совместного создания содержимого. Функции систем управления контентом можно разделить на несколько основных категорий. Создание — предоставление авторам удобных и привычных средств создания контента. Управление — хранение контента в едином репозитории. Это позволяет следить за версиями документов, контролировать, кто и когда их изменял, убеждаться, что каждый пользователь может изменить только тот раздел, за который он отвечает. Кроме того, обеспечивается интеграция с существующими информационными источниками и ИТ-системами. CMS поддерживает контроль за рабочим потоком документов, т.е. контроль за процессом их одобрения. Короче говоря, управление контентом включает в себя хранение, отслеживание версий, контроль за доступом, интеграцию с другими информационными системами и управление потоком документов. Публикация — автоматическое размещение контента на терминале пользователя. Соответствующие инструменты автоматически «подгоняют» внешний вид страницы к дизайну всего сайта. Представление — дополнительные функции, позволяющие улучшить форму представления данных; например, можно строить навигацию по структуре репозитория. CMS-системы управляют небольшими взаимосвязанными единицами информации, и в данном контексте документ приобретает смысл гипертекста. Поскольку CMS-системы управляют информацией, а у информации есть свой жизненный цикл, то, естественно, эти системы должны иметь адекватные средства управления контентом на каждом из этапов его жизни (создание, модификация, публикация, передача в архив и т.д.). В этом смысле CMS можно рассматривать как часть комплекса ILM (information lifecycle management). Среди CMS-систем часто выделяют так называемые каркасы (content management framework, CMF) — инструментарии для создания системы. Как уже говорилось, естественным расширением CMS стали ECM-системы, которые управляют всей разрозненной информацией предприятия, взаимодействуя с другими приложениями, такими как ERP и CRM. Пожалуй, наиболее известный производитель ECM-систем — компания Documentum. Разработкой систем управления контентом занимаются многие компании, в том числе IBM, Microsoft, Oracle, Macromedia. В последнее время начали появляться организации, пытающиеся объединить разработчиков CMS, создать единую информационную среду для потенциальных пользователей подобных систем, продвигать и утверждать единые стандарты. Прежде всего, это ассоциации OSCOM (Open Source Content Management) и CMSWatch. OSCOM утвердила такие стандарты, как WebDav, RSS, ATOM и JSR-170. Один из ее интересных проектов, CMSML, предусматривает создание основанного на XML языка для описания систем управления контентом, списка свойств CMS, словаря для их описания и соответствующих имен для каждого свойства в XML-разметке. Свойства разделены на три больших класса — создание, управление и доставка контента конечному пользователю. В свою очередь, CMSWatch ежегодно выпускает отчет, включающий в себя обзор рынка CMS-систем, сравнение некоторых из них, описание жизненного цикла контента и управления им в CMS-системах. В этой статье мы будем придерживаться классификации, основанной на модели представления данных — объектной, сетевой или модульной. Объектная модель Объектная модель представления данных оперирует такими понятиями, как класс и объект. Классы определяют структуру данных и представляют собой набор атрибутов (текстовая строка, целое число, изображение и т.д.). Представители класса (объекты) имеют определенную структуру и могут содержать другие объекты, образуя произвольную иерархическую структуру. Объекты могут наследовать свойства, содержание и поведение объектов, которые в них содержатся. Примерами объектов служат документы, картинки, папки и учетные записи пользователей. Класс контента не хранит в себе реальных данных — такую информацию содержат объекты (экземпляры класса). Определив один класс, можно создать множество его представителей (контент объектов). В CMS-системах данные обычно хранятся в реляционной или объектной базе данных. В первом случае объектная модель данных отображается на реляционную модель базы данных. Связи между объектами создаются, например, с помощью таблиц вида id, from_object, from_object_version, to_object. На рис. 1 приведена возможная структура класса «Статья» и его представителя.
Среди объектно-ориентированных CMS-систем можно встретить каркасы. Классический пример — Zope CMF. Вообще, Zope — ведущий свободно распространяемый сервер приложений, специализирующийся на управлении контентом в порталах и пользовательских приложениях. Zope позволяет совместно работать над созданием и управлением динамических Web-ориентированных бизнес-приложений. На основе этого сервера приложений построен каркас управления контентом Zope CMF, с помощью которого, в свою очередь, создан целый ряд CMS-систем, в частности, Plone. Еще одна очень распространенная CMS этого класса — eZ Publish. Ее относят и к каркасам, и к ECM. Системы семейства eZ базируются на свободно распространяемом продукте eZ Publish. Наличие двух лицензий — GPL и профессиональной — позволяет создавать коммерческие продукты на основе каркаса eZ Publish, обеспечивая этой системе поддержку как сообщества Open Source, так и профессиональных разработчиков. К этому классу можно отнести и систему APC ActionApps, которая позволяет зарегистрированным пользователям обновлять контент их сайта с помощью только браузера. Особенность этой системы состоит в том, что она имеет настраиваемый вывод. APC ActionApps интегрируется в существующие системы, позволяя упростить структуру и автоматизировать работу сложных порталов и Web-сайтов. Кроме того, механизм content pooling и наличие инструментов редактирования делают эту систему подходящей для распределенных команд, совместно подготавливающих публикацию контента. Microsoft Content Management Server (MCMS) представляет собой систему управления Web-контентом, которая дает возможность создавать, развертывать и поддерживать динамично меняющиеся Web-сайты. Благодаря тесной интеграции с Visual Studio .NET и поддержке функций управления исходными кодами, MCMS позволяет разработчикам создавать сайты, которые потом могут управляться и поддерживаться как ИТ-специалистами, так и бизнес-пользователями. Первые могут централизованно управлять брэндингом, рабочим потоком документов и безопасностью, тогда как вторые — создавать собственный контент, управлять им и публиковать его, используя знакомые приложения, такие как Word или Internet Explorer. Объектная модель поддерживает разработку в среде Visual Studio .Net и .Net Framework. Возможно объединение через Microsoft Solutions for Internet Business (MSIB) Content Connector с сервером Microsoft Commerce Server для создания решений в области электронной коммерции. Как правило, системы, основанные на объектно-ориентированной модели данных, наиболее функциональные, гибкие, но, в то же время, и наиболее сложные. Сетевая модель Данная модель представления данных опирается на теорию графов: структура информации представляется в виде узлов с помеченными связями между ними. Фундаментом системы может служить как сетевая, так и традиционная реляционная СУБД, на которую отображена сетевая модель описания данных. В реляционных таблицах хранится информация об узлах, их атрибутах и связях между ними. Связь отличается от атрибута тем, что в ней хранится ссылка на другой узел, а в атрибуте — собственно значение. Для извлечения данных из направленного графа обычно используются рекурсивные процедуры обработки, такие как составление списков узлов, определение атрибутов узла по атрибутам родителя и др. На рисунке 2 представлен вариант организации структуры данных сайта в виде графа. Рис. 2. Пример организации контента с помощью сетевой модели данных Пример системы такого типа — Communiware. Эта система представляет собой инструментарий нового поколения для создания вертикальных Web-сайтов и порталов. Модульная модель В подобных системах контент разделен на отдельные модули по типам содержимого. Структура данных зависит от модуля, и вся работа с контентом сосредоточена внутри модуля. Модули независимы и полностью отвечают за работу с документами данного типа. Документы описываются с помощью фиксированного набора характеристик — типы документов строго фиксированы. Расширять функциональность можно за счет добавления нового модуля, замены или редактирования существующего кода. Чаще всего нет никакой системы связей между документами разных модулей и между документами одного и того же модуля. Стандартный набор типов контента (модулей) таков: ссылки, статьи, файлы, новости, разделы, форум. Несмотря на очевидную ограниченность модели данных, системы на ее основе наиболее популярны благодаря своей простоте. В качестве примера можно упомянуть такие системы, как PHPNuke, Mambo и Xoops. У модульных CMS-систем есть один общий недостаток — строго фиксированная в пределах модуля структура содержимого. Однако для расширения их функциональности можно воспользоваться внешними модулями, которых в Сети немало. Очевидное преимущество этих систем — возможность получения почти полностью готового к использованию портала за короткое время. Свободно распространяемые CMS-системы Рассмотрим следующие CMS-системы: eZ Publish 3.2, APC ActionApps, Mambo 4.0.14 и Xoops (версии 2.0.5 и 2.0.6). Каждая из них позиционируется разработчиками как система для создания любого сайта (от корпоративного портала до домашней странички) и управления его содержимым. Система eZ Publish предназначена также для создания и управления содержимым Internet-магазина, новостного сайта, фотогалереи или форума. APC ActionApps имеет уникальное свойство добавления динамических разделов на существующем сайте и способна управлять содержимым многих сайтов. Но все-таки правильнее говорить, что CMS-системы предназначены для создания, модификации, публикации и обмена информацией. Прежде чем начать использование какой-либо CMS необходимо определиться, с какими типами контента вы хотите работать — будут ли на вашем сайте статьи, фильмы, новости, форумы и т.п. Обычно CMS-системы поставляются с некоторым количеством готовых к работе встроенных типов контента, а часть из них позволяют редактировать встроенные типы контента или создавать новые (eZ Publish, APC ActionApps). Но есть и системы, в которых все типы контента строго фиксированы (Xoops, Mambo). Каждому пользователю системы должна быть приписана какая-то роль, в соответствии с которой он сможет выполнять определенные действия. При этом, пользователи могут объединяться в различные группы с назначенными правами. Некоторые системы позволяют создавать новые группы и устанавливать им права, отличные от прав существующих групп (eZ Publish, ActionApps, Xoops), и это свойство иногда оказывается очень полезным. Выбирая CMS-систему, всегда хочется получить максимум функциональности при минимуме затрат, да и на поддержку хочется тратить как можно меньше времени и усилий. Чтобы хоть как-то приблизится к этому идеалу, нужно для начала определить необходимый минимум задач, которые должна решать система. При создании, документ наделяется набором характеристик, определяющих текущий этап его жизненного цикла, поэтому стоит обратить внимание на следующее: насколько гибка структура контента конкретной системы, насколько прост процесс создания контента, как он упорядочивается, как происходит управление рабочим потоком документов и возможно ли использование контента совместно с другими информационными системами. Преимущества систем с гибкой структурой контента очевидны. Они позволяют по мере надобности расширять и добавлять новые типы контента средствами самих систем, не занимаясь, например, поиском на стороне подходящей функциональности. С другой стороны, при наличии множества свободно распространяемых модулей (типов контента) можно работать и с системами, имеющими фиксированную структуру контента. Однако в этом случае нужно быть готовым покопаться в коде, поскольку реализация некоторых модулей может оказаться неполной. Основной инструмент создания контента для CMS-систем — Web-браузер. Некоторые системы позволяют использовать также автономного клиента (например, ActionApps) или Windows-клиента. При создании контента важно, насколько прост и интуитивно понятен такой процесс. С этой точки зрения стоит разобраться, какие возможности разметки документов предоставляет конкретный CMS-инструментарий. Нужно выяснить, имеет ли она встроенные, специфичные только для нее, средства разметки или можно пользоваться стандартными средствами типа HTML; создается контент с помощью обычных HTML-форм или встроенных редакторов наподобие WordPad и т.п. eZ Publish, Mambo и ActionApps предлагают использовать HTML для разметки документов, в то время как Xoops располагает и собственными средствами разметки. Применять для упрощения создания контента встроенный текстовый редактор, похожий на Word Pad, можно лишь в Mambo. Чаще всего документы создаются с помощью средств, привычных для их авторов, и хранятся в виде файлов на локальных машинах, поэтому при внесении документа в систему управления содержимым полезно иметь возможность загрузки файлов с локальной машины. Среди рассматриваемых CMS-систем этим свойством в полной мере не обладает ни одна. В Mambo и ActionApps можно загружать на сервер текстовые файлы и рисунки некоторых форматов, а в Xoops и eZ Publish — только рисунки. Следующий важный момент — каталогизация и упорядочивание контента. В eZ Publish весь контент сайта представляется в виде дерева узлов (узлы — это инкапсуляции контент-объектов). Упорядочивание контента внутри дерева производится с помощью контейнеров (папок), под которые помещаются соответствующие объекты (как в файловой системе). Для задания местоположения объекта (определения узлов, которые с ним ассоциируются) используется свойство location. С его помощью при создании или редактировании объекта можно определить, где дополнительно будет отображаться объект кроме места его создания. В добавлении к иерархической структуре, дерево контент-узлов может быть разделено на логические разделы (секции). Для упорядочивания контента в ActionApps используется расширяемая система категорий: в системе изначально имеется набор категорий, а администратор может их изменять или добавлять собственные. Для этого служит специальный встроенный редактор, который позволяет моделировать иерархическую структуру (в категории может быть одна или несколько подкатегорий). В Mambo и Xoops тоже применяются системы категорий, но поскольку эти продукты построены по модульному принципу, наличие или отсутствие системы категорий зависит от модуля. Скажем, для модуля «статьи» существуют категории, а для модуля «форум» — нет. Но какую бы категорию в модуле «статьи» вы ни создали, структура документов в ней будет такой же, как и во всех других категориях данного модуля, — деление на категории чисто смысловое. Если в модуле используется система категорий, можно создавать новые категории, удалять или менять тип доступа для существующих. Механизм каталогизации eZ Publish кажется более функциональным и развитым, но слишком сложным для понимания. Применение же для этих целей категорий, как в остальных системах, гораздо более привычно и понятно, но не позволяет решить, например, проблему отображения документа одновременно в двух категориях. В eZ Publish и ActionApps реализована поддержка национальных алфавитов. Администраторский интерфейс ActionApps настраивается на несколько языков. Каждая версия контента может существовать на разных языках, но при работе с русским языком порой возникают небольшие проблемы. Дело в том, что в коде этих систем прописана кодировка ISO-8859-1, и для создания документов на русском языке ее приходится менять на KOI8-R или WIN-1251. В системах Mambo и Xoops поддержка русского языка вполне удовлетворительна, но в сами эти системы поддержка многоязычности не входит. В Mambo язык вообще зашит в код системы, а переводы применимы только к тому, что хранится в базе данных, поэтому все равно приходится искать непереведенные фразы и изменять их самостоятельно. Русскоязычному пользователю удобнее работать с Xoops, но надо подготовиться к тому, что с появлением новых, непереведенных, модулей в системе будут возникать слова на английском языке. Теперь обратим внимание на то, как CMS-системы управляют потоком документов, позволяют ли они создавать различные версии одного документа и дают ли возможность администраторам следить за процессом публикации документов. Реальный контент eZ Publish, который хранится внутри контент-объектов, может существовать в одной или нескольких версиях. Каждый раз, когда контент редактируется, создается его новая версия, а старая остается нетронутой. Эта система версий позволяет пользователям возвращать/отменять изменения, а чтобы предотвратить переполнение базы данных старыми неиспользуемыми версиями, администратор может установить ограничение на количество версий для контент-класса. Собственно версия документа в eZ Publish описывается с помощью следующих характеристик: номер версии, статус документа (черновик, опубликованный, архивный), язык, создатель, дата изменения. Автоматически контролируется авторство документов: нельзя редактировать чужие документы, можно только создавать их копии и редактировать их. Контролируется и статус документа; несколько версий документа нельзя опубликовать одновременно, поскольку статус опубликованной имеет только одна из них. Существует возможность создавать для разных языков разные версии документа. Документы со статусом «архивные» нельзя редактировать и публиковать (для редактирования создается их копия — черновик). В системе ActionApps поддерживается основной процесс одобрения: автор документа имеет право на его публикацию. Отличие от eZ Publish состоит в том, что документ публикуется сразу после его добавления в систему. При этом статус документа ActionApps может изменяться следующим образом: активный (active), ожидающий рассмотрения (pending), устаревший (expired), в процессе написания (hold bin), ожидающий удаления (trash bin). Каждый документ, будучи создан, сразу становится активным (публикуется). Потом его можно переместить в другую категорию, но для этого необходимо иметь хотя бы права редактора слайса. Понятие версии документа в ActionApps не применяется, впрочем, как и в Xoops, и в Mambo. В системах Xoops и Mambo нет общей системы категорий и унифицированного способа описания документов. Описание зависит от модуля (тип контента), к которому принадлежит документ. Но таких понятий, как версия документа, нет. В Xoops не применяется и понятие статуса документа, но некоторые документы (в зависимости от модуля) можно заносить в архив. В системе Mambo документ имеет статус опубликованного, архивного, одобренного или находящегося в процессе редактирования. Архивные статьи можно редактировать. Статьи, добавленные пользователями, должны быть одобрены администратором. В целом описание документов в системах Mambo и Xoops недостаточно полное и не удовлетворяет даже основам стандарта Dublin Core (один из наиболее распространенных наборов элементов для описания структуры и смысла документов, который создается уже в течение нескольких лет международной группой The Dublin Core Initiative, dublincore.org). Таким образом, для этих систем «отрезан» один из путей решения проблем совместного и повторного использования контента, организации распределенных хранилищ данных. Наиболее развитую систему управления документами, на мой взгляд, предоставляет eZ Publish. Версия 3.2 этой системы поддерживает основной процесс одобрения (право публикации документа имеет только его автор), работу с версиями и трансляциями документов, простейшее отслеживание ревизий. Немаловажно, как рассматриваемые системы используют контент совместно с другими информационными системами. Самые развитые возможности в этом плане имеет ActionApps: обеспечивается обмен информацией внутри самой системы и с другими сайтами APC ActionApps (в терминах данной системы такое свойство называется content pooling). Обмен информацией осуществляют редакторы или администратор. Также поддерживаются отображение категорий и полей для общего контента, импорт и экспорт контента из других баз данных. Все это впечатляюще, но сложновато. Наконец, ActionApps (как и eZ Publish и Xoops) поддерживает использование заголовков RSS. Напоследок резюмируем, как осуществляется управление жизненным циклом контента в CMS-системах. При создании документа, он наделяется набором характеристик (статус, автор, дата устаревания и т.п.), соответствующих текущему этапу его жизненного цикла. Затем документ может быть модифицирован, как и его описание, с помощью средств CMS. Если автор документа не обладает достаточными правами, документ проходит процесс одобрения и после этого может быть опубликован. При определенных условиях (например, была установлена дата устаревания документа или его редко читают) документ может быть занесен в архив. Вообще говоря, такие документы заносятся в архив для облегчения и ускорения доступа к актуальным документам, но некоторые системы (например, Mambo) просто дублируют информацию в архив. Архивные документы хранятся отдельно, но могут быть прочитаны и отредактированы (это зависит от системы). Как архивные, так и актуальные документы можно экспортировать на другие сайты, в другие информационные системы, конвертировать в другие форматы и т.п. Коммерческие системы Рассматриваемые в этом разделе продукты нацелены преимущественно на решение проблем предприятий, поэтому могут быть классифицированы как ECM-системы. Поскольку эти системы — коммерческие, не всегда можно выяснить, какие модели данных используются при их построении. Кроме того, ECM в принципе сложно классифицировать по предложенному нами сценарию, поскольку они, как правило, состоят из наборов различных сервисов и приложений, каждое из которых может использовать свою модель данных. Documentum Documentum — ведущий поставщик программного обеспечения для интегрированного управления документами и контентом. В области управления документами его ближайшими соперниками являются Open Text, IBM и FileNet, а в сфере управления контентом — Vignette, Stellent и Interwoven. В области управления документами решения от Documentum наиболее надежны благодаря возможностям репликации контента и управления им на очень высоком уровне детализации (для переиспользования и перенацеливания), а также поддержке преобразований сложно структурированных документов, расширяемости репозитория и поддержке XML. Реализация Collaboration Edition в Documentum 5 и приобретение этой компанией eRoom заставило считать Documentum прямым конкурентом Open Text и Interwoven. Важные достоинства Documentum состоят в глубоком знании процессов управления потоком документов, контроля версий и управления архивами. Однако решения Documentum могут оказаться менее эффективными, чем некоторые решения-конкуренты, при обработке представления документов на больших Web-сайтах. Система Documentum имеет объектно-реляционную архитектуру (т.е. объектная модель данных отображается на реляционную базу данных), поэтому в нашей классификации может быть отнесена к объектным CMS-системам. FileNet Этот поставщик, фокусирующийся на ECM, долго был лидером на данном рынке, а купив компанию eGail FileNet, вышел на рынок WCM. Это позволило FileNet предложить широкий спектр услуг организациям, реализующим решения для управления контентом. До сих пор компания фокусируется преимущественно на управлении процессами и поддержке транзакционного контента. В 2003 году FileNet представила архитектуру P8, которая поддерживает среды Microsoft и Java. Предлагаются следующие пакеты: Business Process Manager — автоматизация сложных бизнес-процессов; Content Manager — управление, совместное использование и доступ к документам или другим формам контента; Web Content Manager — автоматизация создания, одобрения и публикации контента на Web-сайтах; Image Manager — управление фиксированными типами контента, включая изображения, факсы и т.п. IBM Система IBM Content Manager позволяет организациям получать, хранить, управлять и распространять все формы цифрового контента, включая отсканированные текстовые документы, XML, HTML и мультимедиа. Недавно IBM перепроектировала данный программный продукт, усовершенствовав его, добавив в него функции управления документами, в том числе возможности контроля версий и поддержки ODMA. Это позволило позиционировать Content Manager как полное интегрированное решение для управления документами, предназначенное для потребителей, которые хотят пользоваться универсальным продуктом одного поставщика. Другой ключевой момент — WCM-возможности. Корпорация анонсировала объединение Content Manager с WebSphere Portal, который обеспечивает возможности публикации в Web. Теперь Content Manager будет представлять собой репозиторий для WebSphere-портала. Content Manager также объединен с WebSphere Portal с помощью портлетов, позволяющих пользователю получать доступ к контенту всех типов. После приобретения компании Tarian Software, поставщика решений для управления записями, IBM расширила спектр своего ECM-инструментария за счет средств управления жизненным циклом контента. Модель данных Content Manager — объектно-ориентированная. Open Text Open Text Livelink — это документо-ориентированный продукт, который кроме сервисов управления документами предоставляет мощный набор инструментов для совместной работы, включая групповые расписания, календари и возможности управления процессом работ. Livelink поддерживает Java, ActiveX, PDF и HTML. Эта система была разработана для корпоративных intranet-сред, не поддерживает интеграцию с репозиториями Microsoft Exchange, а ее интеграция с Lotus Notes/Domino возможна только в одном направлении. Livelink поддерживает поисковые запросы на естественном языке и кластеризацию результатов по темам, средства управления потоком документов и модули взаимодействия в режиме реального времени. Архитектура системы — модульная, что позволяет отнести Open Text Livelink к системам модульного типа. Interwoven Interwoven — один из ведущих поставщиков средств WCM. Платформа для управления контентом Interwoven 5 нацелена на крупные компании из списка Fortune 500 и организации, нуждающиеся в контроле за критически важными бизнес-процессами. Платформа управляет всеми формами контента на протяжении всего его жизненного цикла. Ядро Interwoven 5 состоит из модулей TeamSite (управление контентом), MetaTagger (категоризация) и OpenDeploy (распространение контента). Дополнительные компоненты позволяют разрабатывать разнообразные Web-службы. Система имеет «гибридную» архитектуру, что означает возможность хранения контента как в базах данных, так и в файловой системе. При этом используется объектная модель данных. Stellent Как и Documentum, компания Stellent пришла на рынок WCM-приложений из области документно-ориентированных продуктов. CMS-решение этой компании состоит из сервера контента (Stellent Content Server), пакетного приложения для управления контентом и прикладных модулей. В состав последних входят Stellent Content Publisher (публикация контента на Web-сайтах) и Stellent Dynamic Converter (конвертирование при необходимости из исходного бизнес-контента в форматы, которые можно просматривать через Internet). Stellent Content Publisher и Stellent Dynamic Converter тесно связаны с Stellent Content Server; при совместном использовании они обеспечивают комплексное решение для управления контентом и автоматизации создания сайтов. Это решение реализует семь главных функций: Contribution, Native Source Management, Conversion, Web Source Management, Publishing, Deployment и Personalization. Подверженный влиянию своих документно-ориентированных «корней», Stellent Content Server не так хорош при построении сайтов из семейства компонентов, как продукты TeamSite и Vignette Content Server, которые проектировались именно для создания динамических сайтов. Решение Stellent относится к модульной модели. Vignette Vignette — один из главных соперников Documentum в области WCM, который будет конкурировать с этой фирмой и в области Smart Enterprise Suite. Компания Vignette предлагает разнообразные средства создания Web-сайтов, интегрированные с технологиями электронной коммерции и аппаратом администрирования бизнес-процессов. Решение Vignette включает в себя функционал WCM, средства персонализации, портал и инструменты для интеграции приложений. Его архитектура — сервис-ориентированная, и в нашей классификации это решение наиболее близко к модульному типу. Будущее CMS Достигается это, чаще всего, за счет объединения компаний-разработчиков и покупки более мелких специализированных компаний. Ориентируясь на растущие потребности предприятий, лидеры сферы ECM естественно выходят за рамки управления содержимым Web-сайтов и управления документами. Тем не менее очевидно, что потребность пользователей в средствах автоматизации Web-сайтов не только останется неизменной, но даже повысится. Эту нишу должны занять свободно распространяемые продукты модульного или объектного типа, если разработчики будут стремиться сделать их применение более простым. Системы сетевого типа, пожалуй, не получат широкого распространения. В России же системы управления контентом пока не слишком популярны, да и рынок их невелик.
|