Logo Море(!) аналитической информации!
IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware
2004 г.

Zope — платформа для веб-хостинга

Константин Птицын, Издательский Дом "КОМИЗДАТ"

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

Разработка Zope выполнена на языках:
Python и C  (http://www.zope.org).

Как таковой, Zope перешел в категорию бесплатных программных продуктов с открытым исходным кодом с ноября 1998 года. Все предыдущие версии этого продукта были коммерческими. Zope разработан консультационной компанией Digital Creations на основе трех программных продуктов: «Bobo», «Principia» и «Aquaduct». Передавая Zope во всеобщее пользование, компания Digital Creations стремилась сделать этот продукт стандартом в области разработок для веб и увеличить свои доходы за счет предоставления консультационной поддержки.

Zope — мультиплатформенный программный продукт. Он может применяться на многих платформах, включая Linux/Intel, Solaris (SPARC и Intel), Digital Unix, BSDI и Windows NT (а также SGI/Irix, HP-UX, Windows 95/98, Mac OS и Windows CE, хотя официальная поддержка этих платформ в настоящее время не предусмотрена). Zope может работать на таких веб-серверах, как Apache, Netscape Server и Microsoft IIS, а также на мощном веб-сервере Medusa с открытым исходным кодом, который предоставляет доступ к программной платформе Zope на основе протоколов HTTP, вебDAV и FTP.

Сервер приложений

Как программный продукт, Zope может успешно применяться в качестве платформы для веб-приложений. К числу программных продуктов этой категории относятся также Cold Fusion, Silverstream, Netscape Application Server, Active Server Pages (Microsoft) и многие другие. Программные платформы такого типа позволяют значительно упростить разработку и сопровождение веб-сайтов за счет применения программных средств динамического обновления информационного наполнения. Программы, написанные на интерпретируемых языках (Java, JavaScript, VBScript, PHP, Perl, PL/SQL и т. д.), хранятся и выполняются на сервере приложений, а доступ к данным обеспечивает сервер базы данных.

В трехуровневой среде (веб-сервер <--> сервер приложений <--> сервер базы данных) сервер приложений выполняет в основном такие функции:

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

Zope, как платформа для размещения веб-приложений, отличается от других платформ тем, что в ней применяется не отдельная, реляционная база данных, а встроенная, объектная база данных. Наряду с этим, она позволяет использовать в качестве информационного ресурса и реляционные базы данных, предоставляя механизмы для интеграции внешних баз данных в ее объектную структуру. Для этой цели в составе программного обеспечения Zope предусмотрено несколько модулей: Oracle, Sybase, MySQL и ODBC. Коллекция этих модулей постоянно пополняется.

Объектный характер веб и публикация объектов

Веб, фактически, имеет объектную структуру, поэтому URL к веб-ресурсу — это просто путь к объекту в иерархии включения (домен -> компьютер -> объект), а протокол HTTP — лишь один из возможных способов отправки сообщений объекту и получения от него ответов. В настоящее время для создания объектов с динамически обновляемым информационным наполнением (вместо обычных веб-страниц) чаще всего применяются средства автоматической генерации кода HTML на основе содержимого базы данных.

Это требует взаимного согласования следующих трех информационных моделей:

  • модель данных (как правило, данные представлены в реляционной базе данных, то есть в виде таблиц);
  • прикладная модель (структура прикладных объектов — товаров, заказов, счетов и т. д.);
  • презентационная модель (способ представления данных на веб-странице, организация внешнего интерфейса, ввода/вывода).

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

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

Публикация объектов — это применение объектно-ориентированных программных компонентов для создания динамического информационного наполнения (то есть HTML-страниц). В среде публикации объектов Zope (Z Object Publishing Environment) применяется широкий перечень таких программных компонентов, которые в основном подразделяются на два типа: лист-объекты и контейнерные объекты. Как правило, происходит публикация лист-объектов (в частности, DTML-документов или DTML-методов), но контейнерные объекты (например, папки) также могут иметь публикуемые атрибуты (свойства), такие как имя и идентификатор. Контейнерные объекты могут содержать в себе и лист-объекты, и другие контейнеры. Объекты объединены в иерархию включения (подобно каталогам файловой системы) и позволяют разработчику создавать сложные, разветвленные древовидные структуры.

Эта идея является исключительно важной и плодотворной: объектно-ориентированные программные компоненты в среде публикации объектов Zope встроены в четкую, прозрачную иерархическую модель. URL публикуемого объекта — это путь к нему по включающим его контейнерным объектам, от самого верхнего до самого нижнего. При обработке URL платформа Zope последовательно раскрывает включающие контейнерные объекты, переходя к публикуемому объекту не сразу, а только после прохождения через все контейнеры.

По своей структуре URL, применяемый в среде публикации объектов Zope, напоминает путь к HTML-странице в обычном веб-сервере, но на этом сходство объектной иерархической модели с файловой системой заканчивается. Контейнерный объект приобретает все включенные в него объекты в качестве атрибутов. Тем самым, контейнер может иметь не только собственные, но и приобретенные атрибуты. Любой объект, включенный в контейнер, может обращаться к атрибутам не только данного контейнера (в том числе, безусловно, к самому себе как к атрибуту контейнера), но и к атрибутам всех вышестоящих контейнеров.

Это новое объектное отношение: приобретение атрибутов в иерархии включения. В среде Zope для построения иерархии объектов применяется не отношение наследования, а отношение приобретения. Объект, расположенный на более низком уровне иерархии, может приобретать все атрибуты всех объектов верхнего уровня. Приобретение атрибута — это не просто возможность получить к нему доступ, а возможность обращаться к нему как к своему собственному атрибуту.

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

Таким образом, переход к объекту в среде публикации объектов Zope происходит в направлении сверху вниз, а приобретение атрибутов — в направлении снизу вверх. Таковы же и две основные составляющие защиты Zope: при обращении пользователя к опубликованному объекту происходит проверка прав доступа пользователя на каждом уровне, и объекты, обращаться к которым пользователь не имеет права, являются для него невидимыми, а обращение объекта к своему атрибуту является невидимым, инкапсулированным внутреннее устройство атрибута.

Сайт, построенный на платформе Zope, является полиморфным, многоликим. На него может прийти и анонимный пользователь, и зарегистрированный пользователь с именем и паролем, обладающий определенными правами. Но для разных категорий пользователей он выглядит по-разному. Это значит, что он может выполнять и разные функции, в зависимости от категории пользователя. Например, для обычного пользователя «с улицы» он может показать, какие на предприятии есть товары и цены (актуальную информацию, которую не нужно постоянно обновлять вручную), для руководителя, находящегося в командировке,— товары, цены, количество и общие экономические показатели; для склада — одно, для магазина — другое...

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

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

Архитектура Zope

После поступления HTTP-запроса на HTTP-сервер запрос передается публикатору Zope (Zope Publisher), который, в свою очередь, передает его брокеру объектных запросов Zope (ZORB — Zope Object Request Broker). ZORB-брокер анализирует запрос и на основании полученной информации узнает, какой именно объект нужно опубликовать (это может быть объект, непосредственно указанный в URL, или объект, приобретенный от верхнего уровня иерархии). После этого ZORB-брокер вызывает объект, который выполняет предусмотренные в нем действия и в качестве результата возвращает код DTML, который называется образцом. Образец может содержать нераскрытые переменные и невыполненные вызовы других объектов. ZORB-брокер возвращает результаты вызова объекта публикатору Zope, который обрабатывает образец, передавая ZORB-брокеру требования выполнить подстановку переменных или вызвать другие объекты. Выполнив до конца всю эту работу, публикатор Zope выдает результат на браузер пользователя в виде простого HTML-кода.

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

ZORB-брокер выполняет также обработку данных формы, «пряников» (cookie) и параметров запроса, проводит опознавание пользователя и проверку прав доступа, автоматизирует обработку исключительных ситуаций (исключений), подготавливает заголовки HTML и обрабатывает пакеты протокола HTTP с информацией запроса и ответа.

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

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

Администратор управляет сайтом Zope по веб через специальный административный интерфейс. Он создает пользователей Zope, назначает им пароли, определяет права доступа к папкам и другим объектам. Эти пользователи существуют только в объектном пространстве Zope и не имеют никакого отношения к пользователям операционной системы. Главный администратор сайта также может смело назначать администраторов, отвечающих за определенный уголок сайта,— они не могут выйти за рамки предоставленных им полномочий и нарушить защиту всего сайта.

Объектная база данных

Для хранения кода и информационного наполнения веб-сайта Zope применяется объектная база данных Zope или сокращенно ZODB (Zope Object Database). Эта база данных построена так, что для конечного пользователя она выглядит как файловая система, но в действительности сама занимает один большой файл в файловой системе хоста. В ZODB хранится каждый созданный объект, каждый файл, каждый фрагмент информационного наполнения сайта. Это позволяет моделировать иерархию объектов, обеспечивать приобретение атрибутов в иерархии включения, проверять права доступа к объектам, определять контекст объекта. Формат представления данных в ZODB оптимизирован с учетом типичной модели доступа к информации в веб (большого объема вывода и малого объема ввода) и позволяет хранить всевозможную информацию, необходимую для создания динамических веб-приложений: файлы HTML, прикладной код, графику и т. д.

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

Объекты Zope, которые могут быть представлены в ZODB, выполняют три основных функции:

  • хранение информационного наполнения. Такие объекты Zope, как документы, изображения и файлы, могут хранить текстовые и двоичные данные различных форматов;
  • представление деловой логики. Zope позволяет представлять логику обработки деловой информации в виде сценариев на языках Python, Perl и SQL;
  • презентация. Для управления отображением информации применяется интерпретируемый язык на основе тегов — DTML (Document Template Markup Language).

Разработка в среде Zope в основном состоит в проектировании иерархии объектов (в этой среде в процессе разработки иерархической структуры сайта одновременно происходит построение его информационной модели) и отображении объектной модели прикладной задачи на объекты Zope.

Основные способы разработки в среде Zope

В среде Zope может применяться несколько способов разработки разной категории сложности:

  1. Подготовка сценариев DTML, которые позволяют манипулировать с объектами Zope с помощью тегов в документах DTML. Это простейший способ программирования в среде Zope. Язык DTML не позволяет выйти за пределы объектной модели сайта, поэтому программирование на этом уровне не позволяет никоим образом нарушить защиту сайта. Это уровень массового программирования, на котором работают рядовые программисты и веб-дизайнеры.
  2. Разработка методов, позволяющих расширить объектную модель сайта, например, методов доступа к базе данных (SQL Methods) и внешних методов (External Methods). На этом уровне работают ответственные разработчики и администраторы.
  3. Высокоприоритетная разработка на основе API-интерфейса Product. Эта технология разработки дает возможность создавать объекты Zope, к которым можно обращаться через веб так же, как к обычным документам и папкам Zope. Разработка на основе этого API-интерфейса значительно сложнее по сравнению со сценариями DTML и внешними методами, но позволяет применять методы объектно-ориентированного проектирования.
  4. Для настройки среды Zope на конкретную прикладную область может применяться технология Z-классов (ZClass). Эта технология предоставляет в основном такие же функциональные возможности, как и традиционный способ разработки на основе API-интерфейса Product, но намного менее трудоемка.

Основные средства сопровождения

При использовании в качестве веб-сервера программного продукта Medusa (который входит в стандартную поставку и также является бесплатным продуктом) прикладная платформа Zope обеспечивает доступ ко всей иерархии объектов с FTP-клиента (с учетом прав доступа). Это позволяет быстро выгружать на сайт с удаленного компьютера прикладной код и информационное наполнение, создавать и удалять каталоги и т. д.

Для управления средой Zope предусмотрен защищенный административный интерфейс, который позволяет администратору регистрироваться и работать с удаленного компьютера. Через этот интерфейс можно создавать и удалять пользователей, определять права доступа, настраивать параметры объектной базы данных, останавливать и запускать сервер Zope и т. д.

Предусмотрены средства экспорта/импорта любых фрагментов объектной базы данных (например, папок со всеми подпапками). Экспортированные объекты можно импортировать в эту или другую объектную базу данных, а также сохранить в качестве резервной копии.

Организационная поддержка

Вокруг проекта Zope сплотилась очень большая группа инициативных разработчиков. Достаточно сказать, что только на сайте Zope (http://www.zope.org) зарегистрировано около 11 тыс. программистов, которые вносят свой вклад в развитие этого проекта. Перечень продуктов, разработанных на основе Zope и предоставленных во всеобщее пользование, насчитывает сотни наименований. Существуют многочисленные дискуссионные группы и списки рассылки. Документация Zope пока оставляет желать лучшего, но положение постепенно выправляется.

Такой мощный и перспективный программный продукт больше не может оставаться незамеченным.

Новости мира IT:

Архив новостей

Последние комментарии:

Loading

IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware

Информация для рекламодателей PR-акции, размещение рекламы — adv@citforum.ru,
тел. +7 985 1945361
Пресс-релизы — pr@citforum.ru
Обратная связь
Информация для авторов
Rambler's Top100 TopList liveinternet.ru: показано число просмотров за 24 часа, посетителей за 24 часа и за сегодня This Web server launched on February 24, 1997
Copyright © 1997-2000 CIT, © 2001-2015 CIT Forum
Внимание! Любой из материалов, опубликованных на этом сервере, не может быть воспроизведен в какой бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав. Подробнее...