Communiware - инструмент разработки динамичных интерактивных сайтов

Тезисы для конференции по электронной коммерции в Питере в ноябре 1999. Концептуальное описание CW, не потерявшее актуальности.

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

Введение

По мере развития Интернета ужесточаются требования к веб-сайтам. Имеются очевидные тенденции, которые можно кратко обозначить как

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

и в результате:

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

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

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

Позиционирование

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

Для разработки Communiware-сайтов достаточно весьма среднего знания HTML, и не требуется умения программировать. По крайней мере, автор, не зная HTML вовсе, вполне успешно ладил Communiware-сайты на базе статических HTML-шаблонов.

Принципы построения Communiware

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

Основные понятия Communiware

Модель данных в Communiware представляет собой граф. Есть информационные объекты, называемые item, связанные между собой различными типами связи. Каждый айтем имеет уникальный идентификатор, который либо задается автором айтема, либо генерируется автоматически. Айтем является мельчайшей неделимой единицой информации.

Айтем имеет ряд атрибутов, такие как название, аннотация, дата публикации, и собственно, текст. item-ы делятся на типы (тема, статья, реплика, автор и др.), которые принципиально могут иметь разный набор атрибутов. Например, у автора есть атрибут E-Mail, в то время как для текстов он бессмысленен. Заметьте, что такие вещи как автор, рубрика и так далее свойствами объекта не являются - они являются связями данного объекта с другими.

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

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

Визуализация содержания производится с помощью ШАБЛОНОВ. Шаблоны также являются айтемами, хранятся в базе, и управляются через веб-интерфейс. Шаблоны описываются на HTML, синтаксическом расширенном так называемыми ДИНАМИЧЕСКИМИ ЭЛЕМЕНТАМИ (ДЭ). С точки зрения синтаксиса HTML ДЭ являются комментариями, что позволяет работать с шаблоном с помощью визуальных редакторов HTML.

Один физичесий Communiware-сервер может поддерживать множество независимых виртуальных серверов. Каждая страница на комунивер-сайте показывает некторый айтем через некоторый шаблон. URL при этом устроен так: <физический сервер>/<виртуальный сервер>/<item>. В этом случае айтем показывается через свой шаблон по умолчанию, который есть у каждого айтема. Но существует возможность показать item по другому шаблону. В этом случае к URL добавляется /<Шаблон>.

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

Условия отбора в списках описываются ФИЛЬТРАМИ. Фильтр - это фактически произвольный именованный SQL-запрос, зависящий от как от параметров текущего контекста (атрибуты текущего айтема, параметры URL или куки) так и параметров, явно заданных в шаблоне. Написание новых фильтров - это работа для программиста, но, благодаря регулярной структуре базы Communiware почти всегда удается обходится десятком стандартных параметризованных фильтров.
Заметим, что фильтры также вводятся и отлаживаются через веб-интерфейс.

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

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

Технология разработки сайтов с использованием Communiware

  1. Определение модели предметной области - набора типов айтемов и связей , и способа представления информации в базе данных Communiware. Для типовых предметных областей, к примеру, он-лайновых и периодических изданий, дискуссионных сайтов и др все необходимое уже есть в базовом комплекте.
  2. Функциональный дизайн - определение типов страниц, которые будут на сайте, состава информации на них, и навигации. Функциональный дизайн может быть быстро смакетирован средствами Communiware на основе имеющихся прототипов и в работающем виде предъявлен для апробации потенциальным пользователям и/или заказчикам.
  3. Создание графического дизайна (образцов страниц) и соответсвующего HTML - традиционная работа веб-дизайнера.
  4. "Оживление" дизайна - превращение страниц в шаблоны Communiware. При этом шаблоны остаются постижимыми для дизайнера, и он дальше может работать уже с ними, а не со статическими макетами.
  5. Запуск сайта в эксплуатацию и получение удовольствия.

Опыт использования и состояние разработки

В настоящее время наиболее известный проект, выполненный по этой технологии - это Московский Либертариум, находящийся в эксплуатации с мая 1999 года. Дизайн для него разрабатывала компания Actis Systems.

Был реализован также заказной Интранет-сервер для компани ThinkWave, занимающейся разработкой программного обеспечения и Интернет-сервисами, и имеющей группу разработчиков в России и в Америке. Этот сервер содержит эелементы управления программными проектами. Проявляется это в том, что среди типов айтемов там есть такие, как Задание (Task), Ошибка (Bug) и др. Сервер поддерживает технологические процессы раработки, отладки и сопровождения ПО и сервисов.

Сейчас ведутся переговоры с рядом периодических и он-лайновых изданий о лицензировании ими технологии Сommuniware.

Весия 0.1 была анонсирована на РИФе-99. Текущая версия имеет номер 0.6. Выход версии 1.0, поддерживающей возможность коммерческого хостинга, планируется на январь 2000 года. На сайте Communiware имеется примерный план выпуска версий.

Особенности реализации и требования к материальной части

Communiware в настоящее время реализовано в виде набора PERL-модулей для Web-сервера Apache в технологии ModPerl.

Работоспособность гарантируется во тех клонах UNIX, для которых имеется Apache и Perl, то есть во всех. В качестве базы данных используется Oracle, но в принципе возможно портирование на любую другую полноценную СУБД, для которой имеется DBI-интерфейс к Perl.

10 ноября 1999