[ZDP] Deprez 7

Shaw, Howard ShawH@STHS.org
Thu, 6 May 1999 14:14:14 -0500

Here's some more, oh silent people.



When a request comes into the HTTP Server it is passed to the Zope
Publisher. The Zope Publisher in turn passes the request to the Zope
Object Request Broker. The ZORB breaks the request into several parts
and finds from this information the exact Object to publish, which may
be in the requested location, or acquired from above. The Object then is
asked to publish itself. It does this by returning a template which is
passed back up to the Zope Publisher, throught the ZORB. The Publisher
renders the template, calling the ZORB to render variables or make calls
to other objects, using the original environment of the object. This
final information is returned to the HTTP server.

Thanks to this layered approach, i.e. dividing the publishing process
into a number of discrete steps, the system is easily adjusted or
upgraded to new protocols. Changing one layer doesn't affect the others
and vice versa, because they aren't interwoven. 

The Different Layers

Zope Publisher

Z Publisher is the layer that communicates to the external environment,
which is usually a web server, but may be any properly designed program,
for example, ZClient is a program which permits Z Publisher access to be
easily scripted without needing an active web server or HTTP calls.
There exists several protocols which can be used in conjunction with
your choosen web server. Among others, Zope can be accessed through CGI,
PCGI, FastCGI, Netscape's Web Application Interface (WAI), COM, Medusa
(which provides HTTP, WebDAV, and FTP), and the included ZopeHTTPServer.
Zope can even listen to different protocols simultaneously, into the
same object system. Zope is moving towards ZODB3, which will provide
concurrency, and allow truly multi-threaded access to the object

You can think of Zope as a tree with objects as it branches. A web
server can't communicate directly to this 'hierarchy', because it works
with URL's. One of the tasks of Z Publisher is to convert the URL's to
the object/sub-object traversal and vica versa. Thus, it delivers a
plain HTML-page to the web server and translates the request received by
the web brower so that Z ORB understands it. Other tasks are:
marshalling of form data, cookie data and HTTP file upload data, as well
as automating exception handling, generating CGI headers and performing
authentication and authorization, and of course passing the request from
the web server to the heart of Zope : The Zope Object Request Broker.

Howard Clinton Shaw III
St. Thomas High School