Zope | это... Что такое Zope? (original) (raw)
Zope 2
Интерфейс управления Zope в окне веб-браузера. | |
---|---|
Тип | Сервер приложений |
Разработчик | Zope Corporation |
Написана на | Python |
Операционная система | Кроссплатформенный |
Первый выпуск | 1998 (1998) |
Последняя версия | 2.13.16 (11 августа 2012 года) |
Состояние | Active |
Лицензия | Zope Public License |
Сайт | zope2.zope.org/ |
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
Основная статья: 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 (англ.)
- Русскоязычный форум по Zope и Python
- Сайт Zope3.ru
- Сайт для изучающих Zope3
- Сайт поддержки пользователей Plone и Zope
- Надстройки для Zope
- Форум по Zope
Примечания
- ↑ CGI: Python and Internet Programming
- ↑ 1 2 Introduction — BlueBream documentation
- ↑ Weitershausen, 2007, p. 10
- ↑ ZODB (Zope Object DataBase)
- ↑ RelStorage
- ↑ ZEO (Zope Enterprise Objects)
- ↑ ZServer README.txt
- ↑ Introduction to ZCatalog
- ↑ 1 2 Weitershausen, 2007, p. 7
- ↑ Baiju M, A Comprehensive Guide to Zope Component Architecture
- ↑ Zope 2 documentation, Basic DTML
- ↑ Язык программирования Python, Разработка Web-приложений на Интуит.ру
- ↑ http://docs.zope.org/zope2/zope2book/Security.html Zope 2 documentation, Users and Security
- ↑ Zope is very secure - анализ на основе CVE database (http://nvd.nist.gov), Jan Ulrich Hasecke
- ↑ Weitershausen, 2007, pp. 389-430
- ↑ Zope 2 Documentation, Acquisition
- ↑ Сузи, 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
- Сузи Р. А. Язык программирования Python: Учебное пособие. — М.: Интуит, Бином. Лаборатория знаний, 2006. — 328 с. — ISBN 5-9556-0058-2, Лекция 8: Разработка Web-приложений
Веб-фреймворки | |
---|---|
ASP.NET | DotNetNuke • ASP.NET MVC • MonoRail |
ColdFusion | ColdSpring • Fusebox • Mach-II • Model-Glue |
Java | Apache (Cocoon • Struts • Velocity • WebWork 2) • AppFuse • Aranea • Eclipse • Facelets • Flexive • FreeMarker • Google Web Toolkit • Grails • Hamlets • ItsNat • JavaServer Faces • Jspx • JBoss Seam • jZeno • Makumba • OpenLaszlo • OpenXava • Reasonable Server Faces (RSF) • Restlet • RichFaces • RIFE • Shale • SmartClient • Spring • Stripes • Tapestry • ThinWire • Vaadin • WebMacro • WebWork • WebObjects • Wicket • ZK |
JavaScript | node.js • AJILE • Clean AJAX • Dojo Toolkit • Echo • Ext JS • jQuery • jMaki • Microsoft AJAX Library • MochiKit • MooTools • Prototype • qooxdoo • Rialto Toolkit • Rico • script.aculo.us • SmartClient • Spry • SproutCore • Yahoo! UI Library • Underscore • PhoneGap |
Perl | Catalyst • Interchange • Titanium • Maypole • HTML:Mason |
PHP | Acode • Akelos • BlueShoes • CakePHP • Canvas • CodeIgniter • DIY • Drupal • Fuse • Horde • Kohana • LiveStreet • PHP For Applications • PHPOpenbiz • PRADO • Qcodo • Seagull • Solar • Symfony • W3Core • Yii • Zend • Zoop • Joomla |
Python | CherryPy • Django • GAE framework • Karrigell • Nevow • Porcupine • Pylons • Pyramid • Spyce • TurboGears • Twisted • Tornado • Webware • Zope |
Ruby | Camping • Nitro • IOWA • Ramaze • Cerise • Merb • Ruby on Rails • Sinatra • Padrino |
Прочиеязыки | Alpha Five • Fusebox (ColdFusion • PHP) • Helma Object Publisher (Server-side) • Lift (Scala) • Magic (Scheme) • OpenACS (Tcl) • Seaside (Smalltalk) • UnCommon Web (Common Lisp) • Yaws (Erlang) • Oracle Application Express (PL/SQL) |