Zope

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

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

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

Див. також

Посилання

  • Офіційний сайт
  • Who cares about zope? [Архівовано 16 січня 2013 у Wayback Machine.] - Martijn Faassen 2011/06/07 (коротка історія Zope, та його впливу на розвиток Python та інших фреймворків.)
  • Zope: Quick and Simple [Архівовано 25 жовтня 2013 у Wayback Machine.] - Linux Productivity Magazine, Листопад 2002
  1. Guido van Rossum Leaves Zope.com
  2. ZODB (Zope Object DataBase). Архів оригіналу за 22 липня 2012. Процитовано 13 червня 2014.
  3. RelStorage. Архів оригіналу за 26 листопада 2013. Процитовано 13 червня 2014.
  4. ZEO (Zope Enterprise Objects). Архів оригіналу за 7 серпня 2012. Процитовано 13 червня 2014.
  5. ZServer README.txt. Архів оригіналу за 29 січня 2012. Процитовано 13 червня 2014.
  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.
  9. Трактат про Zope Component Architecture [Архівовано 23 грудня 2014 у Wayback Machine.] - Блог одного кібера
  10. Zope 2 documentation, Basic DTML. Архів оригіналу за 23 квітня 2012. Процитовано 13 червня 2014.
  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.
  13. Weitershausen, 2007, с. 389—430.
  14. Zope 2 Documentation, Acquisition. Архів оригіналу за 13 липня 2012. Процитовано 13 червня 2014.


Програмне забезпечення Це незавершена стаття про програмне забезпечення.
Ви можете допомогти проєкту, виправивши або дописавши її.
  • п
  • о
  • р
Реалізації
Вебфреймворк
IDE
Стандарт
Інше
  • п
  • о
  • р
Каркаси вебзастосунків (веб-фреймворки)
ASP.NET
ASP.NET MVC Framework · BFC · DotNetNuke · MonoRail · Umbraco
ColdFusion
ColdSpring · Fusebox · Mach-II · Model-Glue · onTap
Common Lisp
ABCL-web · blow · BKNR · SymbolicWeb · UnCommon Web
Erlang
BeepBeep · Chicago Boss · Erlang Web · ErlyWeb · Inets · Misultin · Mochiweb · Nitrogen · WebMachine · Yaws
Flex
Cairngorm
Java
Apache Cocoon · Apache Struts · Apache Tapestry · AppFuse · Aranea framework · Click Framework · Cooee framework · Flexive · Google Web Toolkit · Grails · Hamlets · IT Mill Toolkit · ItsNat · JavaServer Faces · JBoss Seam · Makumba · Mentawai · Oracle ADF · OpenLaszlo · OpenXava · Play Framework · Reasonable Server Faces · Restlet · RIFE · Shale Framework · SmartClient · Spring Framework · Stripes · ThinWire · WebObjects · WebWork · Apache Wicket · XTT Framework · ZK Framework
Клієнтські для JavaScript
ASP.NET AJAX · AJILE · Clean AJAX · Backbone.js · Dojo toolkit · Echo JS · Ext JS · jQuery · KnockoutJS · MochiKit · Meteor · MooTools · OpenLink AJAX Toolkit · Prototype · React · qooxdoo · Rialto Toolkit · Rico · script.aculo.us · SmartClient · Spry framework · WinJS · Underscore.js · Yahoo! UI Library
Perl
Catalyst[en] · Interchange · Maypole framework · Mason · Mojolicious
PHP
Akelos PHP Framework · CakePHP · Chisimba · CodeIgniter · Drupal · DokuWiki · eZ Publish · FUSE · Horde · Joomla! · Kohana · MODX · Phalcon · PHP For Applications · PHPOpenbiz · PRADO · Qcodo · Seagull PHP Framework · Simplicity PHP framework · Laravel · SilverStripe · Symfony · VirtueMart · Zend Framework · Zoop Framework · Yii
Python
CherryPy · Django · Flask · Karrigell · Nevow · Porcupine · Pylons · Spyce · TurboGears · TwistedWeb · web.py · web2py · Webware · Zope
Ruby
Camping · Nitro · IOWA · Ramaze · Cerise · Merb · Ruby on Rails
Scala
Lift · Play Framework · Scalatra
Серверні для JavaScript
AppJet · firecat · Helma Object Publisher · Node.js
Lua
Dart
Інші
Alpha Five · Fusebox (ColdFusion і PHP) · OpenACS (Tcl) · Seaside (Smalltalk) · HAppS (Haskell)·