Сервер приложений Zope

Сегодня существует более продвинутое решение в области серверов приложений - Z Object Publishing Environment (ZOPE). Zope представлет собой мощную и чрезвычайно гибкую среду разработки и поддержки, которая содержит коннекторы к подавляющему большинству распространенных баз данных, средства автоматического контроля версий, мощную схему разделения доступа, возможность отчуждения и репликации любых фрагментов сайтов, встроенные средства поиска и индексирования содержимого и многое другое, что позволяет делать на его основе все. К сожалению, для российской действительности, практически неразрешимая для Zope проблема - размещение сервера у хостинг-провайдера.

Проведенный опрос московских провайдеров дал неутешительные результаты: в тот период, когда python уже входил в десятку первых проектов на www.sourceforge.net, являлся частью процедуры инсталляции RedHat и использовался при конфигурировании ядра Linux, на вопрос о возможности использование python подавляющее большинство провайдеров дало ответы типа: "наверное, вам нужна NT, а у нас Linux RedHat 6.1". Похоже, единственный вариант контракта c провайдером, допускающим возможность использования Zope - услуга co-location, что приемлимо лишь для достаточно крупных и дорогостоящих проектов.

Технически Zope представляет собой объектно-ориентированную среду, реализующую поверх Python все ту же базовую идею заполнения слотов темплейта данными, извлеченными по запросу пользователя. В качестве языка темплейтов используется DTML, которого в подавляющем большинстве случаев достаточно для извлечеия и отображения данных. В остальных случаях можно создавать массивные процедуры на Python и импортировать их в Zope . Как и в случае Midgard , проектирование интернет ресурса требует хорошей начальной проработки для определения списка используемых объектов и отношений наследования между ними: любое информационное наполнение в Zope представляется как объекты определенного типа, такие как "DTML-документ", "DTML-метод", "Рисунок", "Каталог" или типы, определяемые пользователем (скажем, для логотипов или баннеров отображаемых на страницах, можно определить типы "Logo" и "Banner"). Далее следует не менее сложная стадия программирования и определения пользовательских типов: но результат оправдывает затраченные усилия. Тип Logo, Banner, ZDiscuss (доска объвлений) - это готовые, легко тиражируемые решения, затраты на повторное использование которых близки к нулю.