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