Archive of UserLand's first discussion group, started October 5, 1998.

Re: Zope and Frontier compared

Author:Michel Pelletier
Posted:5/13/1999; 2:08:45 PM
Topic:Zope vs. Frontier
Msg #:6181 (In response to 4124)
Prev/Next:6180 / 6182

I'd like to post a minor correction and a some additional information to your excellent article.

>Digital Creations has even more database tools for use with Zope, >but some of them cost money or require a consulting contract. Their >Their Aqueduct product allows Zope to join results from different >databases and fetch results from other Zope servers

The ability to proxy for other Zope servers is called Z Network Client, and is commercial software.

Aquaduct is now know as ZSQL Methods, and is included with Zope under the Open Source license. Technically, Zope has two components to it's SQL solution: Database Adapters and ZSQL Methods. Database Adapters are an abstraction away from various database flavors. ZSQL Methods are just like Python "methods" that run against configured Adapters. This makes it easy to switch all of your code from one SQL server to another, or to have various ZSQL methods use different adapters (and thus merge the presentation of data between differnet and possible remote databases). There are Database Adapters for almost all known flavors of databases, including a few we write ourselves (like DCOracle). Most others are contributed by our community.

>Their Tabula product (a.k.a. "Z Tables") adds a built-in SQL (?) >database to Zope, and allows users to upload database files from >their workstations. A number of popular database formats are >supported.

ZTables (called Tabula before Zope went Open Source) is not an SQL database (although this is a common misconception). ZTables is a tool which manages tabular data and various indexes to search that data. Data can be edited through the web or uploaded from a DBase IV/V format, Rand format, or Comma Seperated Values (CSV). ZTables manages the data columns, the indexes for those columns, contains the layout (DTML) of how to present the data in the ZTable, and does various other cool things, like supporting drop in indexes (like Hierarchies and Keyword Hierarchies) and computes and indexes artificially introduced columns from Python expressions on the fly (which can be used to make it pseudo-relational).

Much of the functionality of ZTables will be Open Sourced soon, this is called (internally) ZTablesCore. It is the basis behind the soon to be Open Sourced Catalog, which indexes objects and offers lightning quick searching of various extensable indexes of Zope objects.

Your article was very good, I especially like how you pointed out the orthoganality of Zope and Frontier (I've not used Frontier, BTW). There are several other newer features of Zope that are currently experimental, like the ability to create new object classes through the web, called ZClasses.

ZClasses are very exciting, and we are using them quite extensively internally to design our new site. ZClasses let you define new object types through the web, defining their properties and methods. Once your classes are constructued (a minimal framework class can be instanciatable by filling out one form) they can be instanciated in Zope just like built in objects (Files, Documents, Folders etc.) It is possible also to write classes in Python, and register than as subclassble in Zope. This technique is used, for example, with the Catalog. The ZTablesCore Product is written in Python *and contains no Zope specific code*. It could just as easily be used as the searching and indexing machienery for an IMAPd server written in Python, for example. The ZTablesCore product does, however, register itself as subclassable, and the ZClass Catalog defines the Catalog object, which subclasses ZTablesCore. Therefore, all of ZTableCore's methods and attributes are available to the Catalog ZClass.

This brings us back to the original philosophy of Bobo (the predecesor of ZPublisher, Zope's protocol to object ORB) of being able to publish existing non-Zope python code on the web with no changes. This would allow someone, as an example, to port mailman (a very popular mail list manager written in Python) to have a Zope inteface simply by registering mailman's classes as subclassable by a ZClass and writting a ZClass to define the web interface.

All through the web.

Thanks again for the great thread,

-Michel Pelletier Softwear Developer Digital Creations Inc.

This page was archived on 6/13/2001; 4:50:07 PM.

© Copyright 1998-2001 UserLand Software, Inc.