[Python-de] Zope "Uberblick ?

Markus Fleck fleck at informatik.uni-bonn.de
Mon Mar 8 16:54:50 EST 1999


Stefan Franke:
> - Als 'Datenbank' wird ein persistenter Objektspeicher verwendet, der
> relativ (leider nicht ganz vollständig) transparent arbeitet.

Sehe ich das falsch, dass es sich dabei mehr oder weniger um
"ge'pickle'te" bzw. "ge'shelve'te" Python-Objekte handelt?

> - Ü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.

...was zur Folge hat, dass die "interessanten" Funktionen (wie z.B.
HTML-Templates fuer Seitenheader und -footer) in der URL-Hierarchie (!) ganz
nach oben rutschen, und da ziemlich schnell ein ziemliches Chaos und
Durcheinander herrscht. IMHO waere es viel einfacher, wenn man explizit
sagen koennte, wo Attribute gesucht werden sollten - aber das geht (AFAIK)
nicht. Ich war die halbe Zeit damit beschaeftigt, um diese Beschraenkung
herumzubauen. Was ist z.B., wenn man einen Template mit einem bestimmten
Namen von der obersten Ebene (diese sei mal "Ebene 0" genannt) auf Ebene 2
"vererben" moechte, aber auf Ebene 1 ein anderes Template haben will, aber
mit dem gleichen Namen? Darf es solche Sites nicht geben, oder habe ich da
etwas falsch verstanden?

> 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.

Ein Problem ist, dass das Umhaengen per (Web-)GUI geschieht - bei
groesseren Umorganisationen ist das also eine ziemliche Aktion,
oder man muss sich dazu in die Interna arbeiten und das mit einem
Skript machen lassen. (Ein "mv" oder Search/Replace mit Textfiles
geht nicht, denn es steht ja alles in Zopes monolithischer
Objekt-"Datenbank".)

> 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

Wichtig ist hierbei, dass es nicht Anweisungen, sondern nur *Ausdruecke*
sein koennen - einfache, einzeilige Python-Ausdruecke. Damit kommt man
IMHO nicht sehr weit.

> Ich selbst benutze von Zope in meinem momentanen Projekt vor allem
> die Basiskomponenten, und erweitere das ganze mit selbstgeschriebenen 
> Modulen.

Da wuerde sich fuer mich die Frage stellen, ob selbstgeschriebene
Module auch noch mit der naechsten Zope-Version zusammenarbeiten,
und wie ich sicherstellen will, dass die naechste Zope-Version die
"Datenbank"-Datei ueberhaupt noch lesen kann. Wird das irgendwie
garantiert? Kann ich eine Zope-"Datenbank" importieren/exportieren?

> 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.

IMHO muss man den Grossteil der Funktionalitaet ohnehin selbst
implementieren - und ohne Zope (z.B. mit PHP3) geht das wohl schneller. Fuer
Mini-Websites ohne "Intelligenz", also mit reinen HTML-Seiten, ist das
WWW-Management-Interface sicherlich ganz nett, aber nur zum Editieren von
Server-WWW-Seiten im Browser mittels eines Formular-Textfelds muss man nicht
den ganzen Ballast von Zope mit herumschleppen. Bei PHP3 kann man z.B.
Dateien angeben, die fuer die ganze Website automatisch vor und nach
jede Datei gehaengt werden koennen, z.B. zur User-Authentifizierung,
automatischen Header/Footer, oder zur Definition von danach benutzbaren
Funktionen, und hat damit mit minimalem Aufwand schon einen Grossteil der
Moeglichkeiten von Zope (wie z.B. zentrales Management).

> 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.

Ich verwende PHP z.Zt. fuer eine Website und ein (noch nicht ganz fertig
debuggtes) Mini-Groupware-System (Notiz, Kalender, Dateiup-/Download).
Unter <http://netzagentur.informatik.uni-bonn.de/forum/> kann man
z.Zt. noch eine aeltere Version von letzter Woche anschauen (und
von mir aus auch testen; Login: test/test). Reines PHP3, ca. 700
Zeilen, davon 200 Zeilen fuer die Kalender-Monatsuebersicht.

Viele Gruesse,
Markus.

-- 
///////////////////////////////////////////////////////////////////////////
 "The great programmer adds features to a program by removing code."
                  -- http://csis.olivet.edu/CSIS/courses/s98/taxonomy.html
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\




More information about the Python-de mailing list