Zope — об'єктно-орієнтований прикладний сервер застосунків, написаний на мові програмування Python. Zope підтримує Об'єкт «Z Object Publishing Environment.»

Zope
ТипВебсервер
РозробникZope Foundationd Редагувати інформацію у Вікіданих
Стабільний випуск2.11.4 (6 липня 2009)
Операційна системадекілька
Мова програмуванняPython Редагувати інформацію у Вікіданих
ЛіцензіяZope Public License (ZPL)
Вебсайтwww.zope.org

Часто Zope (точніше Zope2) застосовується як система управління вмістом (CMS). Але для цих цілей був створений програмний каркас CMF (англ. Content Management Framework) — набір бібліотек для створення систем публікацій під Zope. На основі CMF була створена система публікацій Plone.

В кінці 2005 року був випущений Zope3. Це повністю перероблена версія Zope, яка розроблялася впродовж декількох років і при її розробці враховувався досвід використання Zope2.

З виходом Zope3, розробники отримали могутній сервер застосунків, за допомогою якого стало можливим розробляти не тільки CMS, але і складніші системи, зокрема системи автоматизації бізнес-процесів і документообігу.

Знімок вікна браузера з відкритою адміністративною панеллю ZODB

Історія

ред.

Zope Corporation була заснована у 1995 у Фредеріксбургу, штат Вірджинія під назвою Digital Creations, як спільне підприємство з InfiNet (мережа газет). Компанія розробила систему приватних оголошень для інтернет. В 1997 компанія стала незалежною та приватною. Інженерами керував Джим Фултон - головний технічний директор. Компанія PythonLabs, розробники мови Python, стали частиною компанії в 2000. Творець мови Python Гвідо ван Россум покинув Zope Corp в 2003.[1]

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

ред.

Об'єктна база даних ZODB

ред.
Докладніше: 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[en]),
  • Синтаксис виразів TAL (Template Attribute Language Expression Syntax — TALES[en]),
  • макророзширення TAL (Macro Expansion Template Attribute Language — METAL[en]).

Робота з вебформами

ред.

Вебзастосунки часто потребують обробки даних, що вводяться користувачем, а побудовані на основі вебтехнологій системи керування вмістом зазвичай підтримують редагування контенту через веб (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]. Запозичення забезпечує доступ до об'єктів вищих рівнів в ієрархії зверненням до об'єкта більш глибокого рівня. Наприклад, якщо деякий об'єкт (документ, зображення, файл, тощо.) розташований в деякий папці, то він доступний на ім'я з будь-яких папок нижче.

Див. також

ред.

Посилання

ред.
  1. Guido van Rossum Leaves Zope.com
  2. ZODB (Zope Object DataBase). Архів оригіналу за 22 липня 2012. Процитовано 13 червня 2014. [Архівовано 2012-07-22 у Wayback Machine.]
  3. RelStorage. Архів оригіналу за 26 листопада 2013. Процитовано 13 червня 2014.
  4. ZEO (Zope Enterprise Objects). Архів оригіналу за 7 серпня 2012. Процитовано 13 червня 2014. [Архівовано 2012-08-07 у Wayback Machine.]
  5. ZServer README.txt. Архів оригіналу за 29 січня 2012. Процитовано 13 червня 2014. [Архівовано 2012-01-29 у Wayback Machine.]
  6. Introduction to ZCatalog. Архів оригіналу за 22 грудня 2012. Процитовано 13 червня 2014.
  7. а б Weitershausen, 2007, с. 7.
  8. Baiju M, A Comprehensive Guide to Zope Component Architecture. Архів оригіналу за 24 червня 2014. Процитовано 13 червня 2014. [Архівовано 2014-06-24 у Wayback Machine.]
  9. Трактат про Zope Component Architecture [Архівовано 23 грудня 2014 у Wayback Machine.] - Блог одного кібера
  10. Zope 2 documentation, Basic DTML. Архів оригіналу за 23 квітня 2012. Процитовано 13 червня 2014. [Архівовано 2012-04-23 у Wayback Machine.]
  11. http://docs.zope.org/zope2/zope2book/Security.html [Архівовано 22 квітня 2012 у Wayback Machine.] Zope 2 documentation, Users and Security
  12. Zope is very secure — анализ на основе CVE database (http://nvd.nist.gov), Jan Ulrich Hasecke. Архів оригіналу за 15 липня 2012. Процитовано 13 червня 2014. {{cite web}}: Зовнішнє посилання в |title= (довідка) [Архівовано 2012-07-15 у Wayback Machine.]
  13. Weitershausen, 2007, с. 389—430.
  14. Zope 2 Documentation, Acquisition. Архів оригіналу за 13 липня 2012. Процитовано 13 червня 2014. [Архівовано 2012-07-13 у Wayback Machine.]