[Python-de] Zope "Uberblick ?

Stefan Franke sfranke at cdc-group.com
Mon Mar 8 16:17:29 EST 1999


Also zum Vergleich mit PHP+MySQL kann ich nichts sagen, weil ich
PHP nicht kenne (als ich mir php.net mal kurz angeschaut habe, bekam
ich von den $-Zeichen vor den Variablen gleich eine Gänsehaut), aber zu 
Zope im allgemeinen.

Das ganze ist eine Ansammlung von einigen, eigentlich relativ
unabhängigen
Komponenten und Techniken:

- Im Kern steht der "Zope Publisher" (früher Bobo), der im Prinzip ein
Rewrite
einer URL vornimmt. Da in Python alles völlig dynamisch ist, kann so
eine
Abbildung des URL-Pfades /m1/o2/o3... auf die Modul/Objekthierarchie
m1.o2.o3 eines verschachtelten Python-Objekts vorgenommen werden.
Jedes Objekt ist seinerseits wirder in der Lage, den Abbildungsmecha.
nismus zu customizen.

- Das ganze funktioniert entweder mit dem eingebauten HTTP-Server, oder
mit einem CGI-Stub über einen anderen Webserver. In beiden Fällen ist
Zope ein long running process, und man spart sich wie bei FastCGI den
Prozeßoverhead jedes Aufrufs.

- Als 'Datenbank' wird ein persistenter Objektspeicher verwendet, der
relativ
(leider nicht ganz vollständig) transparent arbeitet. Aus
Programmierersicht
sieht das dann so aus, als ob sich die gesamte Objekthierarchie im
Speicher
befände (beginnen mit einem root-Objekt 'app'). In Wirklichkeit befinden
sich
die Objekte jedoch in der DB, und werden bedarfsgesteuert aktiviert und
gecacht.
Der Datenbank fehlt momentan eine Abfragesprache (etwa OQL), man kann
auf die Objekte nur hierarchisch zugreifen, ansonsten braucht man
selbstge-
schriebene Python-Funktionen.
Der Datenspeicher bietet noch ein paar Goodies, z.B. eine einfache
Trans-
aktionsverwaltung mit Undo.

- Über das ganze wurde noch ein Aquisition-Mechanismus gepackt. Dabei 
werden Objektattribute zur Laufzeit von enthaltenden Objekten auf
enthaltene vererbt, wenn die Attribute beim Lesezugriff nicht im lokalen
Dictionary eines Objektes gefunden werden. Im Gegensatz zur Klassen-
hierarchie, deren Vererbungsrelation (in Python relativ) fest steht,
können
sich also die lesbaren Attribute eines Objektes durch umhängen in ein
anderes umgebendes Objekt zur Laufzeit ändern.

Diese Dinge funktionieren für sich alle recht prima, und sind
konzeptionell
gut (sie gibt es auch schon ein bißchen länger). Darauf baut nun die 
eigentliche Zope-Applikation auf, und über die läßt sich streiten (s.
die
Mails von Markus Fleck).

Die Applikation stellt im Prinzip eine webbasierte Management-Oberfläche
für den Objektspeicher zur Verfügung, und vereint unter diesem Dach 
eine Reihe von Modulen ("Produkten"), meistens zum DB-Zugriff.

Für die dynamische Erzeugung von HTML-Seiten wurde eine Sprache 
namens DTML in Server-Side-Include Syntax (d.h. Anweisungen in 
HTML-Kommentaren) kreiert, die im Prinzip die Auswertung von 
Python-Ausdrücken beim Abruf von Seiten (die natürlich im Objektspeicher

abgelegt sind) erlaubt. Das Ganze ist dann noch angereichert mit
einer Reihe von Makros und Defaultvariablen zum Zugriff auf die DB,
so das im Prinzip für Standardaufgaben kein Python programmiert 
werden muß.

 * * *

Ich selbst benutze von Zope in meinem momentanen Projekt vor allem
die Basiskomponenten, und erweitere das ganze mit selbstgeschriebenen 
Modulen. DTML und die meisten anderen Teile der Applikation verwende
ich kaum, und kann auch wenig praxismäßiges darüber sagen.

Aus meiner Sicht nervt etwas die mangelnde Dokumentation des
internen APIs, meistens findet man beim Sourcenlesen ganz 
interessante Dinge, aber das ist doch ziemlich zeitraubend.

Ferner stört etwas, daß sich alle publizierten Objekte entweder im 
Objektspeicher befinden, oder explizit zugänglich gemacht werden 
müssen. Eine einfache Webserverfunktionalität mit Zugriff aufs
Filesystem wäre in manchen Fällen doch sehr wünschenswert.

Generell kann ich die negative Meinung von Markus nicht teilen, aber
für eine Urteil in puncto straight-forward Zugriff auf Datenbanken fehlt
mit die Erfahrung mit PHP.

Stefan

> -----Ursprüngliche Nachricht-----
> Von:	Uwe Hentzschel [SMTP:uhe at stahl-groeditz.de]
> Gesendet am:	Montag, 8. März 1999 12:58
> An:	python-de at server.python.net
> Betreff:	[Python-de] Zope "Uberblick ?
> 
> Hallo
>         
> durch die Anfrage von Tom Schwaller in Hinblick auf seine CD bin ich
> etwas neugierig auf das Zope-Projekt geworden. Irgendwie packe ich
> den Einstieg nicht so richtig. Ich sehe nicht so die großen Vorteile
> im Vergleich mit PHP+MySQL. Wahrscheinlich kann man die Sache nicht
> einfach mit links angehen. Könnte mir vielleicht jemand auf die
> Sprünge
> helfen... ? (Anbindung Python , DHTML, Datenbankanbindung)
> Entschuldigt die etwas globale Frage.
>         
> mfG
> Uwe
> 
> _______________________________________________
> Python-de maillist  -  Python-de at starship.python.net
> http://starship.python.net/mailman/listinfo/python-de




More information about the Python-de mailing list