Zope

Материал из Википедии — свободной энциклопедии
Перейти к: навигация, поиск
Zope 2
Zope-screenshot.png
Интерфейс управления Zope в окне веб-браузера.
Тип

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

Разработчик

Zope Corporation

Написана на

Python

Операционная система

Кроссплатформенный

Первый выпуск

1998 (1998)

Последняя версия

2.13.16 (11 августа 2012 года)

Состояние

Active

Лицензия

Zope Public License

Сайт

zope2.zope.org

Zope 3
Zope-screenshot.png
Тип

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

Разработчик

Zope Corporation

Написана на

Python

Операционная система

Кроссплатформенный

Первый выпуск

2004 (2004)

Последняя версия

3.4.1 (22 июня 2010 года)

Состояние

Active

Лицензия

Zope Public License

Сайт

zope.org

Zope (англ. Zope Object Publishing Environment, среда публикации объектов Zope, произносится [зо́уп]) — объектно-ориентированный сервер приложений, написанный на языке программирования Python. Zope разрабатывается на основе собственной Open Source лицензии ZPL.

Zope (точнее, Zope2) обычно применяется в качестве системы управления содержимым (CMS). Для этих целей был создан программный каркас CMF (англ. Content Management Framework) — набор библиотек для создания систем публикаций под Zope. В свою очередь на основе CMF была создана система публикаций Plone.

История[править | править вики-текст]

В 1996 году Джим Фултон, в то время технический директор Digital Creations, на конференции International Python Conference (IPC) сделал презентацию по теме CGI: «Python and Internet Programming»[1]. Джим, считая CGI очень далёким от совершенства, придумал новый путь для программирование на Python для сети Интернет[2].

В 1998 году Digital Creations объединила системы Bobo и Principia под маркой Zope и опубликовала их исходный код под лицензией ZPL. Zope 2.0 был выпущен в 1999 году[3].

В конце 2005 года был выпущен Zope3. Это полностью переработанная версия Zope, которая разрабатывалась на протяжении нескольких лет, и при её разработке учитывался опыт использования Zope2. С выходом Zope3 разработчики получили мощный сервер приложений, с помощью которого стало возможным разрабатывать не только CMS, но и более сложные системы, в частности системы автоматизации бизнес-процессов и документооборота. В январе 2010 года Zope3 был переименован в BlueBream[2].

Технологии и свойства[править | править вики-текст]

Объектная база данных ZODB[править | править вики-текст]

Для долговременно сохраняемых (англ. persistent) объектов в Zope традиционно используется объектная база данных ZODB[4], хотя ничто не мешает использовать и другие средства, например, файловую систему или реляционную базу данных. Да и сама ZODB может использовать в качестве back-end реляционную базу данных при помощи RelStorage[5]. Кроме того, несколько экземпляров (англ. instance) Zope могут работать с одной ZODB посредством ZEO[6].

ZServer[править | править вики-текст]

ZServer является интеграцией сервера приложений Zope с сервером Medusa. ZServer даёт HTTP, FTP, WebDAV, PCGI и удалённый интерактивный доступ Python[7].

Каталог объектов ZCatalog[править | править вики-текст]

Для удовлетворения поисковых запросов к объектной базе данных в Zope 2 применяется ZCatalog. В ZCatalog-объекте хранятся индексы (англ. index) и метаданные (англ. metadata). Индексы являются данными, по которым ищут содержимое, а метаданные — копии некоторых полей индексируемых объектов, которые могут быть прочитаны без извлечения самого объекта из базы данных. Результатом поиска является последовательность элементов, называемых брэйнами (от англ. brain — «мозг»). Брэйны действуют по принципу ленивых вычислений, так как они создаются «на лету», по мере потребеления результата запроса, и не «будят» настоящие исходные объекты из базы данных[8].

Компонентная архитектура ZCA[править | править вики-текст]

Zope 3 является набором программных компонентов. Компоненты являются объектами с чётко определённой функциональностью и ответственностью, зафиксированной в описаниях интерфейсов. Разработанные в рамках Zope технологии компонентной архитектуры zope.component, zope.interface, zope.event в силу своей обобщённости могут применяться в других программных системах на Python[9][10].

Система шаблонов для HTML/XML[править | править вики-текст]

Для разработки веб-приложений одной из основных задач является генерация кода на языках разметки, используемых в WWW. Zope использует для этой цели DTML (англ. Document Template Markup Language) и ZPT (англ. Zope Page Templates). DTML не рекомендуется использовать в новом коде[11]. ZPT основан на XML и состоит из трёх документированных частей[12]:

  • Язык шаблонных атрибутов (Template Attribute Language — TAL (англ.)),
  • Синтаксис выражений TAL (Template Attribute Language Expression Syntax — TALES (англ.)),
  • Макрорасширение TAL (Macro Expansion Template Attribute Language — METAL (англ.)).

Работа с веб-формами[править | править вики-текст]

Веб-приложения часто нуждаются в обработке данных, вводимых пользователем, а построенные на основе веб-технологий системы управления содержимым обычно поддерживают редактирование контента через веб (TTW, англ. through-the-web). Для обработки форм Zope 3 предлагает пакеты zope.formlib в сочетании с пакетом для описания схемы данных zope.schema.[9]

Разграничение прав доступа[править | править вики-текст]

В процессе обработки запроса происходит идентификация и аутентификация пользователя. Права доступа пользователей Zope 2 предоставляются им на основе правил защиты (security policy, "политика безопасности"). Для авторизации пользователя при доступе к некоторому ресурсу выявляется его роль (англ. role) и проверяется, имеется ли у данной роли разрешение (англ. permission) на доступ к ресурсу. Такая система позволяет описывать достаточно тонкие (англ. fine-grained) права доступа и делает Zope сравнительно безопасным[13][14]. В Zope 3 предлагаются механизмы аутентификации PAU (англ. Pluggable Authentication Utility - встраиваемая поддержка аутентификации) и авторизации zope.security[15].

Заимствование (acquisition)[править | править вики-текст]

Заимствование (англ. acquisition) — интересный и достаточно уникальный подход к построению взаимоотношений между объектами, состоящий в совместном использовании поведения на основе отношения вложенности объектов[16]. Заимствование обеспечивает доступ к объектам вышележащих уровней в иерархии обращением к объекту более глубокого уровня. Например, если некоторый объект (документ, изображение, файл и т. п.) расположен в некоторый папке, то он доступен по имени из любых нижележащих папок. Заимствование является одним из важнейших свойств Zope, которое позволяет создавать более простые и наглядные решения, но требует грамотного обращения[17].

Ссылки[править | править вики-текст]

Примечания[править | править вики-текст]

Литература[править | править вики-текст]

  • С. Спикльмайр Zope. Разработка Web-приложений и управление контентом. — М.: ДМК-пресс, 2003. — 464 с. — (Web-технологии: разработка, дизайн и сопровождение web-сайтов). — ISBN 5-94074-189-4.
  • Philipp Weitershausen. Web Component Development With Zope 3. — Springer, 2007. — ISBN 978-3-540-33807-9.
  • Грегер С. Э. Сервер приложений «Zope». — М.: Горячая линия - Телеком, 2009. — 256 с. — ISBN 978-5-9912-0112-4.
  • Сузи Р. А. Язык программирования Python: Учебное пособие. — М.: Интуит, Бином. Лаборатория знаний, 2006. — 328 с. — ISBN 5-9556-0058-2., Лекция 8: Разработка Web-приложений