Zope

Материал из Википедии — свободной энциклопедии
Перейти к навигации Перейти к поиску
Zope 2
Логотип программы Zope 2
Скриншот программы Zope 2
Интерфейс управления Zope в окне веб-браузера.
Тип Сервер приложений
Разработчик Zope Corporation
Написана на Python
Операционная система Кроссплатформенный
Первый выпуск 1998 (1998)
Последняя версия 2.13.16 (11 августа 2012 года)
Состояние Active
Лицензия Zope Public License
Сайт archive.today/2013011312…
Логотип Викисклада Медиафайлы на Викискладе
Zope 3
Логотип программы Zope 3
Скриншот программы Zope 3
Тип Сервер приложений
Разработчик 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 является интеграцией сервера приложений 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].

Примечания

[править | править код]
  1. CGI: Python and Internet Programming Архивировано 2 июля 2012 года.
  2. 1 2 Introduction — BlueBream documentation. Дата обращения: 30 июня 2010. Архивировано из оригинала 22 января 2010 года.
  3. Weitershausen, 2007, p. 10.
  4. ZODB (Zope Object DataBase) Архивировано 22 июля 2012 года.
  5. RelStorage. Дата обращения: 13 июля 2012. Архивировано 26 ноября 2013 года.
  6. ZEO (Zope Enterprise Objects) Архивировано 7 августа 2012 года.
  7. ZServer README.txt Архивировано 29 января 2012 года.
  8. Introduction to ZCatalog. Дата обращения: 27 июля 2012. Архивировано из оригинала 22 декабря 2012 года.
  9. 1 2 Weitershausen, 2007, p. 7.
  10. Baiju M, A Comprehensive Guide to Zope Component Architecture. Дата обращения: 28 июля 2012. Архивировано из оригинала 24 июня 2014 года.
  11. Zope 2 documentation, Basic DTML. Дата обращения: 4 августа 2012. Архивировано из оригинала 23 апреля 2012 года.
  12. Язык программирования Python, Разработка Web-приложений на Интуит.ру. Дата обращения: 28 июля 2012. Архивировано 6 августа 2012 года.
  13. http://docs.zope.org/zope2/zope2book/Security.html Архивная копия от 22 апреля 2012 на Wayback Machine Zope 2 documentation, Users and Security
  14. Zope is very secure — анализ на основе CVE database (http://nvd.nist.gov), Jan Ulrich Hasecke Архивировано 15 июля 2012 года.
  15. Weitershausen, 2007, pp. 389—430.
  16. Zope 2 Documentation, Acquisition. Дата обращения: 28 июля 2012. Архивировано из оригинала 13 июля 2012 года.
  17. Сузи, 2006.

Литература

[править | править код]
  • С. Спикльмайр. 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-приложений