Python Web Frameworks Overview: Zope
URL
http://www.zope.org
Licence
ZPL - Zope is open source,
as are many of the extensions and add-ons available for it.
Deployment Platforms
- As a standalone server - this is the default, which permits Zope to be
run relatively easily "out of the box".
- Integrated with a Web server using CGI, PCGI or FastCGI.
- The Zope environment is provided by long-running processes.
Operating Systems
Zope works on UNIX and Windows platforms.
Suitability
The "out of the box" single server option makes Zope attractive for
developers who either do not want to integrate many components or have little
experience in doing so. The need to have Zope processes continuously running
excludes Zope from certain hosting environments, but being available as a
packaged product with explicit security features, Zope is also attractive to
other, potentially more specialised hosting companies. Thus, Zope hosting can
be had, even for free, with certain hosting providers.
Development Interfaces
- Presentation-oriented - DTML methods and templates provide a lightweight
introduction to the processing of inputs and the production of Web pages
in response.
- Object-oriented, servlet-like - external methods and Zope Products
expose request and response objects to Python components.
Environment Access
- Zope's object database (ZODB) is the principal means of associating
resources with application components.
- Adapters which provide access to external resources, such as database
systems, are available for use with Zope.
Session, Identification and Authentication
- Zope 2.5 (and earlier releases with CoreSessionTracking) provides a
mechanism for the identification of users.
- Zope has always supported authentication for "site editors", but such
support may only be appropriate for "content management"
applications.
Persistence Support
- Zope provides near-transparent object persistence in the object
database, and it is possible to have multiple object database
instances.
- Interaction with relational database systems is typically performed
using SQL.
- Certain tools are available for querying object database instances, but
the reliance on ZODB for the storage of application data (should this be
chosen) may be a significant concern in certain environments.
- A noticeable tradeoff therefore exists between convenience of
persistence (using ZODB) and openness of access (using SQL-based
databases).
Presentation Support
- DTML - Zope's original presentation technology which provides additional
special tags for use in HTML or other textual resources.
- ZPT (Zope Page Templates) - a presentation technology which specifies
XML attributes for use with XML-based documents.
Other presentation systems could presumably be supported in Zope, but from
Zope 2.5, the above technologies appear to be "first class".
Comments
Zope provides so much support for some activities that certain kinds of
applications can be created and configured in very short periods of time,
given enough experience of Zope development. Where object persistence is
required, for example, Zope applications require little effort to make such
mechanisms work, whereas other frameworks (such as Enterprise JavaBeans
container-managed persistence) require a certain amount of administrative
overhead (the declaration of each object schema) and may be prone to obscure
failure, given the complexity of the integration and configuration of many
different systems.
The means of configuring or customising applications in Zope seems very
clever - by storing documents or objects at particular points in the object
database, Zope's "acquisition" mechanism permits applications to find
resources according to where both applications and resources reside, relative
to one another. Moreover, by supporting such dynamic environmental lookup,
Zope encourages the redistribution of applications by reducing the
restrictions on how such applications need to be set up.