Zope
Zope — об'єктно-орієнтований прикладний сервер застосунків, написаний на мові програмування Python. Zope підтримує Об'єкт «Z Object Publishing Environment.»
| |
Тип | Вебсервер |
---|---|
Розробник | Zope Foundationd |
Стабільний випуск | 2.11.4 (6 липня 2009) |
Операційна система | декілька |
Мова програмування | Python |
Ліцензія | Zope Public License (ZPL) |
Вебсайт | www.zope.org |
Zope у Вікісховищі |
Часто Zope (точніше Zope2) застосовується як система управління вмістом (CMS). Але для цих цілей був створений програмний каркас CMF (англ. Content Management Framework) — набір бібліотек для створення систем публікацій під Zope. На основі CMF була створена система публікацій Plone.
В кінці 2005 року був випущений Zope3. Це повністю перероблена версія Zope, яка розроблялася впродовж декількох років і при її розробці враховувався досвід використання Zope2.
З виходом Zope3, розробники отримали могутній сервер застосунків, за допомогою якого стало можливим розробляти не тільки CMS, але і складніші системи, зокрема системи автоматизації бізнес-процесів і документообігу.
Історія
Zope Corporation була заснована у 1995 у Фредеріксбургу, штат Вірджинія під назвою Digital Creations, як спільне підприємство з InfiNet (мережа газет). Компанія розробила систему приватних оголошень для інтернет. В 1997 компанія стала незалежною та приватною. Інженерами керував Джим Фултон - головний технічний директор. Компанія PythonLabs, розробники мови Python, стали частиною компанії в 2000. Творець мови Python Гвідо ван Россум покинув Zope Corp в 2003.[1]
Технології та властивості
Об'єктна база даних ZODB
Для об’єктів що зберігаються (англ. persistent) в Zope традиційно використовується об'єктна база даних ZODB[2], хоча ніщо не заважає використовувати й інші засоби, наприклад, файлову систему або реляційну базу даних. Та й сама ZODB може використовувати як back-end реляційну базу даних за допомогою RelStorage[3]. Крім того, кілька екземплярів (англ. instance) Zope можуть працювати з однією ZODB допомогою ZEO[4].
ZServer
ZServer є інтеграцією сервера додатків Zope з сервером Medusa. ZServer дає HTTP, FTP, WebDAV, PCGI і віддалений інтерактивний доступ Python[5].
Каталог об'єктів ZCatalog
Для задоволення пошукових запитів до об'єктної базі даних в Zope 2 застосовується ZCatalog. В ZCatalog-об'єкті зберігаються індекси (англ. index) та метадані (англ. metadata). Індекси є даними, за якими шукають вміст, а метадані — копії деяких полів індексованих об'єктів, які можуть бути прочитані без отримання самого об'єкта з бази даних. Результатом пошуку є послідовність елементів, які називаються "brains" (англ. brain — «мозок»). Брейни діють за принципом лінивих обчислень, оскільки вони створюються «На льоту», у міру споживання результату запиту, і не «тягнуть» справжні вихідні об'єкти з бази даних[6].
Компонентна архітектура ZCA
Zope 3 є набором програмних компонентів. Компоненти є об'єктами з чітко визначеною функціональністю та відповідальністю, зафіксованої в описах інтерфейсів. Розроблені в рамках Zope технології компонентної архітектури zope.component
, zope.interface
, zope.event
в силу своєї узагальненості можуть застосовуватися в інших програмних системах на Python[7][8][9].
Система шаблонів для HTML/XML
Для розробки веб-застосунків одним з основних завдань є генерація коду на мовах розмітки, що використовуються в WWW. Zope використовує для цієї мети DTML (англ. Document Template Markup Language) і ZPT (англ. Zope Page Templates). DTML не рекомендується використовувати в новому коді[10]. ZPT ґрунтується на XML і складається з трьох документованих частин:
- Мова атрибутів шаблонів (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
.[7]
Розмежування прав доступу
В процесі обробки запиту відбувається ідентифікація та аутентифікація користувача.
Права доступу користувачів Zope 2 надаються їм на основі правил захисту (security policy, "політика безпеки"). Для авторизації користувача при доступі до деякого ресурсу з’ясовується його роль (англ. role) та перевіряється, чи є у цієї ролі дозвіл (англ. permission) на доступ до ресурсу. Така система дозволяє описувати достатньо тонкі (англ. fine-grained) права доступу та робить Zope порівняно безпечним[11][12]. В Zope 3 пропонуються механізми аутентифікації PAU (англ. Pluggable Authentication Utility — вбудовується підтримка аутентифікації) та авторизації zope.security
[13].
Запозичення (acquisition)
Запозичення (англ. acquisition) — цікавий та достатньо унікальний підхід до побудови взаємовідносин між об'єктами, що складається в спільному використанні поведінки на основі відношення вкладеності об'єктів[14]. Запозичення забезпечує доступ до об'єктів вищих рівнів в ієрархії зверненням до об'єкта більш глибокого рівня. Наприклад, якщо деякий об'єкт (документ, зображення, файл, тощо.) розташований в деякий папці, то він доступний на ім'я з будь-яких папок нижче.
Див. також
- Сервер застосунків
- Plone
- Medusa (фреймворк)
Посилання
- Офіційний сайт
- Who cares about zope? - Martijn Faassen 2011/06/07 (коротка історія Zope, та його впливу на розвиток Python та інших фреймворків.)
- Zope: Quick and Simple - Linux Productivity Magazine, Листопад 2002
- Guido van Rossum Leaves Zope.com
- ZODB (Zope Object DataBase). Архів оригіналу за 22 липня 2012. Процитовано 13 червня 2014.
- RelStorage
- ZEO (Zope Enterprise Objects). Архів оригіналу за 7 серпня 2012. Процитовано 13 червня 2014.
- ZServer README.txt. Архів оригіналу за 29 січня 2012. Процитовано 13 червня 2014.
- Introduction to ZCatalog. Архів оригіналу за 22 грудня 2012. Процитовано 13 червня 2014.
- Weitershausen, 2007, с. 7.
- Baiju M, A Comprehensive Guide to Zope Component Architecture
- Трактат про Zope Component Architecture - Блог одного кібера
- Zope 2 documentation, Basic DTML
- 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. Архів оригіналу за 15 липня 2012. Процитовано 13 червня 2014.
- Weitershausen, 2007, с. 389-430.
- Zope 2 Documentation, Acquisition