Zope

Материал из Википедии — свободной энциклопедии
Версия от 14:08, 15 ноября 2025; imported>Alex NB OT (унификация языковых шаблонов)
(разн.) ← Предыдущая версия | Текущая версия (разн.) | Следующая версия → (разн.)
Перейти к навигации Перейти к поиску

Шаблон:Карточка программы Шаблон:Карточка программы Zope (англ. Шаблон:Lang-en2, произносится [зо́уп]) — объектно-ориентированный сервер приложений, написанный на языке программирования Python. Zope разрабатывается на основе собственной Open Source лицензии ZPL.

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

История

В 1996 году Джим Фултон, в то время технический директор Digital Creations, на конференции International Python Conference (IPC) сделал презентацию по теме CGI: «Python and Internet Programming»<ref>CGI: Python and Internet Programming Шаблон:Webarchive</ref>. Джим, считая CGI очень далёким от совершенства, придумал новый путь для программирование на Python для сети Интернет<ref name="blueream_docs_intro">Шаблон:Cite web</ref>.

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

В конце 2005 года был выпущен Zope3. Это полностью переработанная версия Zope, которая разрабатывалась на протяжении нескольких лет, и при её разработке учитывался опыт использования Zope2. С выходом Zope3 разработчики получили мощный сервер приложений, с помощью которого стало возможным разрабатывать не только CMS, но и более сложные системы, в частности системы автоматизации бизнес-процессов и документооборота. В январе 2010 года Zope3 был переименован в BlueBream<ref name="blueream_docs_intro" />.

Технологии и свойства

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

Шаблон:Main Для долговременно сохраняемых (англ. Шаблон:Lang-en2) объектов в Zope традиционно используется объектная база данных ZODB<ref>ZODB (Zope Object DataBase) Шаблон:Webarchive</ref>, хотя ничто не мешает использовать и другие средства, например, файловую систему или реляционную базу данных. Да и сама ZODB может использовать в качестве back-end реляционную базу данных при помощи RelStorage<ref>Шаблон:Cite web</ref>. Кроме того, несколько экземпляров (англ. Шаблон:Lang-en2) Zope могут работать с одной ZODB посредством ZEO<ref>ZEO (Zope Enterprise Objects) Шаблон:Webarchive</ref>.

ZServer

ZServer является интеграцией сервера приложений Zope с сервером Medusa. ZServer даёт HTTP, FTP, WebDAV, PCGI и удалённый интерактивный доступ Python<ref>ZServer README.txt Шаблон:Webarchive</ref>.

Каталог объектов ZCatalog

Для удовлетворения поисковых запросов к объектной базе данных в Zope 2 применяется ZCatalog. В ZCatalog-объекте хранятся индексы (англ. Шаблон:Lang-en2) и метаданные (англ. Шаблон:Lang-en2). Индексы являются данными, по которым ищут содержимое, а метаданные — копии некоторых полей индексируемых объектов, которые могут быть прочитаны без извлечения самого объекта из базы данных. Результатом поиска является последовательность элементов, называемых брэйнами (от англ. Шаблон:Lang-en2 — «мозг»). Брэйны действуют по принципу ленивых вычислений, так как они создаются «на лету», по мере потребления результата запроса, и не «будят» настоящие исходные объекты из базы данных<ref>Шаблон:Cite web</ref>.

Компонентная архитектура ZCA

Zope 3 является набором программных компонентов. Компоненты являются объектами с чётко определённой функциональностью и ответственностью, зафиксированной в описаниях интерфейсов. Разработанные в рамках Zope технологии компонентной архитектуры zope.component, zope.interface, zope.event в силу своей обобщённости могут применяться в других программных системах на PythonШаблон:Sfn<ref>Шаблон:Cite web</ref>.

Система шаблонов для HTML/XML

Для разработки веб-приложений одной из основных задач является генерация кода на языках разметки, используемых в WWW. Zope использует для этой цели DTML (англ. Шаблон:Lang-en2) и ZPT (англ. Шаблон:Lang-en2). DTML не рекомендуется использовать в новом коде<ref>Шаблон:Cite web</ref>. ZPT основан на XML и состоит из трёх документированных частей<ref>Шаблон:Cite web</ref>:

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

Работа с веб-формами

Веб-приложения часто нуждаются в обработке данных, вводимых пользователем, а построенные на основе веб-технологий системы управления содержимым обычно поддерживают редактирование контента через веб (TTW, англ. Шаблон:Lang-en2). Для обработки форм Zope 3 предлагает пакеты zope.formlib в сочетании с пакетом для описания схемы данных zope.schema.Шаблон:Sfn

Разграничение прав доступа

В процессе обработки запроса происходит идентификация и аутентификация пользователя. Права доступа пользователей Zope 2 предоставляются им на основе правил защиты (security policy, «политика безопасности»). Для авторизации пользователя при доступе к некоторому ресурсу выявляется его роль (англ. Шаблон:Lang-en2) и проверяется, имеется ли у данной роли разрешение (англ. Шаблон:Lang-en2) на доступ к ресурсу. Такая система позволяет описывать достаточно тонкие (англ. Шаблон:Lang-en2) права доступа и делает Zope сравнительно безопасным<ref>http://docs.zope.org/zope2/zope2book/Security.html Шаблон:Wayback Zope 2 documentation, Users and Security</ref><ref>Zope is very secure — анализ на основе CVE database (http://nvd.nist.gov), Jan Ulrich Hasecke Шаблон:Webarchive</ref>. В Zope 3 предлагаются механизмы аутентификации PAU (англ. Шаблон:Lang-en2 — встраиваемая поддержка аутентификации) и авторизации zope.securityШаблон:Sfn.

Заимствование (acquisition)

Заимствование (англ. Шаблон:Lang-en2) — интересный и достаточно уникальный подход к построению взаимоотношений между объектами, состоящий в совместном использовании поведения на основе отношения вложенности объектов<ref>Шаблон:Cite web</ref>. Заимствование обеспечивает доступ к объектам вышележащих уровней в иерархии обращением к объекту более глубокого уровня. Например, если некоторый объект (документ, изображение, файл и т. п.) расположен в некоторый папке, то он доступен по имени из любых нижележащих папок. Заимствование является одним из важнейших свойств Zope, которое позволяет создавать более простые и наглядные решения, но требует грамотного обращенияШаблон:Sfn.

Ссылки

Примечания

Шаблон:Примечания

Литература

Шаблон:Веб-серверы Шаблон:Python