Zope - Z Object Publishing Environment |
|
Понедельник 23 августа 15:39 (GMT) |
О нас Python Zope Архитектура Введения Вопросы Что и как Документация Новости Публикации Компоненты Сайты Ссылки Хостинг Новости Copyright Ответственность Поиск |
Zope - Z Object Publishing EnvironmentZope (www.zope.org) - это программный комплекс, предназначенный для создания сложных Web-приложений.
Рассмотрим пример... (позднее примечание - пример безнадёжно устарел,
и сервер, на котором он был размещён - тоже; сервер выключен, ссылка
на пример удалена. Приношу свои извинения. Bit rot...)
На этой странице ссылки на две тестовых программы. Первая программа
высвечивает таблицу. Простую HTML-таблицу, содержимое которой берется из
базы данных (в данном примере - из SQL-сервера Postgres). Ничего
особенного, и ничего сложного - любой программист, который начинает
осваивать связку "CGI + SQL" пишет такую программу.
В парадигме CGI избежать взаимозависимости между дизайнером и программистом невозможно. Стоит дизайнеру захотеть изменить внешний вид сайта - и во многих CGI приходится вносить изменения. И наоборот - на правильно спроектированном сайте программист совершенно не пересекается с дизайнером. Главным достоинством Zope является полное разделение труда между программистом, дизайнером и content-менеджером. Приведенный в документации пример (http://www.zope.org/Documentation/Guides/ZCMG-HTML/ZCMG.2.1.1.html), показывает последовательность экранов, на которых работает Web-master, не прибегая к программированию. Zope решает это с помощью понятия "шаблонов". Шаблон рисуют дизайнер и content-менеджер, а программист добавляет блоки, наполняющие шаблон реальной информацией. Превращение полученного наполненного данными шаблона в HTML - тоже задача Zope.
Другим важным аспектом Zope является "наследование" (но не то, которое
inhritance, а то, которое aquisition). Например, когда шаблон спрашивает у
Zope - а какой у нас сегодня стандартный HTML footer, Zope пробежится по
иерархии объектов от текущего уровня вверх, и найдет наиболее специфичный
footer. Шаблоны могут вкладываться в шаблоны, а потому, если дизайнер
захочет изменить footer для текущего уровня (и вниз по дереву), ему нет
нужды копировать весь footer - достаточно создать более специфичный footer,
поставив в нем ссылку на footer более высокого уровня. Это существенно
облегчает обслуживание сайта и внесение изменений - изменения не надо
вносить во все копии по причине отсутствия копий - изменения вносятся туда,
где они нужны, дальше они "сами" разбегутся вниз по дереву.
Важный механизм всякого сложного Интернет-приложения - безопасность.
Механизмы security в Zope тоже есть, и они активно используют
"наследование". Например, генеральный менеджер сайта может определить
список менеджеров, каждый из которых отвечает за один подраздел. Каждому
из менеджеров даются права, и они, в свою очередь, часть этих прав могут
передать ниже по дереву - определить дизайнеров, которым доступна только
часть того, чем "владеет" менеджер подраздела.
Zope практически целиком написан на Питоне (www.python.org).
Это делает сервер полностью переносимым. Разве что ДОС не может запустить
Zope (по причине отсутствия сокетов в ДОСовском питоне :)
Помимо шаблонов Zope предоставляет стандартный способ извлечения данных
из SQL-серверов. Несмотря на хваленое единообразие SQL, сервера все-таки
сильно различаются друг от друга, и перенести комплекс CGI, ориентированный
на один сервер, на другой - задача сложная.
Zope поддерживает "хранение" - persistence. Происходит это благодаря
записи объектов в специальную объектную базу данных. (Zope, будучи написана
на чистом объектно-ориентированном языке, сам весь из себя
объектно-ориентирован). Сохранение и восстановление данных для объектов
происходит практически прозрачно для программиста.
Zope имеет свой собственный HTTP-сервер, так что его можно использовать
вообще без httpd. Но я предпочитаю статические документы отдавать Апачем, и
Zope умеет жить из-под любого WWW-сервера. Для связи используется маленький
переходничок Zope.cgi. Этот CGI, будучи запущен WWW-сервером, проверяет,
есть ли уже Zope в памяти (если нет - запускает его) и передает ему свое
окружение. Ждет ответ от Zope и передает их WWW-серверу.
Еще один важный механизм Zope - версии. Версией назывется объект или группа объектов, или целое поддерево сайта, помеченное в ОО-базе как версия. Новая версия не видна посетителям сайта, и доступна программистам/дизайнерам для редактирования. В момент, когда разработчики завершат работу над обектом или поддеревом, версия объявляется завершенной, и Zope выставляет посетителям новую версию сайта. Zope - это не цельный кусок софта, а набор компонент. Есть HTTP-сервер, его можно заменить Апачем. Есть механизм публикации динамических объектов (объекты пишутся на питоне). Есть ОО-база данных, в которых объекты могут хранить свои состояния. При изменении состояния буфер undo создается автоматически, поэтому не рекомендуется в этой базе держать часто меняющиеся данные, типа counter'ов. А механизм шаблонов я просто-таки использую на своих сайтах (его можно использовать совсем без Zope). Сочетание шаблонов и публикатора объектов приводит к классным эффектам - возникает возможность делать наследование имен (aquisition, не знаю, как это правильно по-русски сказать). Есть механизм интеграции с SQL; в том смысле интеграции, что SQL-запрос может стать частью шаблона. Это не совсем embedded SQL, дело в том, что ZTemplates - больше выполняемый код, чем статические шаблоны. |
||||
|
|||||
|