Veraltet!
   Zope Einführung
   Bausteine
   Ein objektorientierter Webserver
4.    Benutzer und Rollen
4.    ZCatalog
4.    Relationale Datenbanken
4.    ZEO
   Entwickeln mit Zope
5.    TTW (Through the Web)
5.    Python Produkte
   Nachteile von Zope
   Persönliche Einschätzung zu Zope
   FAQ
   Glossar
10    Links
11    About
niemand.leermann@thomas-guettler.de

1 Veraltet! [toc]

Dieser Vortrag ist veraltet. Ich verwende Zope nicht mehr. Ich bin auf ZODB+ZEO+Dulcinea+Quixote umgestiegen. Wer an dieser, mehr Python-typischen Anwendung Interesse hat, empfehle ich meine ZODB-Einführung.

2 Zope Einführung [toc]

Zope ist ein objektorientierter Open Source Web Application Server.

3 Bausteine [toc]

Zope besteht aus folgenden Bausteinen:

4 Ein objektorientierter Webserver [toc]

Zope ist ein objektorientierter Webserver. Die URL "http://localhost:8080/foo" ruft das *Objekt* "foo" im Wurzelverzeichnis auf. "foo" ist nicht wie sonst üblich eine Datei oder ein Verzeichnis auf dem Webserver! Es handelt sich dabei um ein Objekt der objektorientierten Datenbank ZODB.
Ruft man nun "http://localhost:8080/foo/bar" auf, ist "bar" z.B. eine Methode des Objekts "foo". CGI-Parameter werden der Methode übergeben, als ob sie in einem normalen Script aufgerufen wurde. Der Aufruf ".../foo/bar?frage=blu" ist analog dem Aufruf in einem Script: "foo.bar(frage='blu')"

4.1 Benutzer und Rollen [toc]

Zope bietet eine Benutzer- und Rollenverwaltung. Zur Authentifizierung wird HTTP Basic Authentification verwendet. Der Benutzer gibt das Passwort in einem Fenster des Browsers ein.

Es können Benutzer und Rollen angelegt werden. Der Zugriff auf Webseiten lässt sich an Hand von Zugriffsrechten regeln. Programmiert man ein Python Produkt, lassen sich eigene Rechte erstellen. Außerdem existieren Produkte, um externe Datenquellen zur Authentifizierung zu benutzen: NT-User Folder, LDAP, SQL, ...

4.2 ZCatalog [toc]

ZCatalog ist ein Art Suchmaschine. Der Index kann jedoch im Gegensatz zu htdig oder swish-e aktualisiert werden, sobald sich die Eigenschaften ändern eines indizierten Objekts ändern. Es wird demnach immer der aktuellen Datenbestand gesucht. Nächtliche Cron-Jobs für die Indizierung sind nicht nötig.

4.3 Relationale Datenbanken [toc]

Der Zugriff auf relationale Der Zugriff auf Datenbanken ist leicht möglich. PostgeSQL, MySQL, Oracle, Sybase, ODBC etc. werden unterstützt.

4.4 ZEO [toc]

Mittels ZEO kann die Objektdatenk ZODB auf mehrere Rechner verteilt werden. Die Last kann somit von mehreren Rechner getragen werden, was auch eine höhere Verfügbakeit ermöglicht. Dies wird in der Praxis jedoch selten benötigt.

5 Entwickeln mit Zope [toc]

Es gibt zwei unterschiedliche Möglichkeiten, um Anwendungen mit Zope zu entwickeln: In den folgenden beiden Abschnitten werden TTW und Python Produkte erläutert.

5.1 TTW (Through the Web) [toc]

TTW bedeutet, dass man mittels einem Web-Browser den Server bzw. die Web-Seiten verwaltet. Das hat den Vorteil, dass man auf dem Client nur einen Browser benötigt. Es gibt folgende Möglichkeiten um TTW Webseiten zu erstellen: Beispiel für das Zope Management Interface: Management Interface

5.2 Python Produkte [toc]

Python Produkte werden mit einem gewöhnlichen Editor in Python geschrieben.

Python Produkte haben im Gegensatz zu "through the web" den Vorteil, dass man mit den üblichen Mittel (Editor, grep, CVS) den Quelltext verwaltet.
  1. Man programmiert eine Klasse mit der Programmiersprache Python.
  2. Zope liest die Klassendefinition und stellt die Möglichkeit bereit eine Instanz dieser Klasse zu erzeugen.
  3. Man erstellt eine Instanz per Web.
  4. Die Instanz wird in ZODB gespeichert.
  5. Nun kann auf die Instanzen in der Objektdatenbank mittels Web-Browser, XML-RPC, FTP oder WebDAV zugegreifen werden.
  6. Da ZODB nur die Daten und nicht den Quelltext speichert, wirken sich Änderungen am Quelltext auch auf die schon erstellten Objekte in der Datenbank aus. Außnahme: Der Quelltext im Konstruktor (__init__()) wird bei schon erstellten Objekten natürlich nicht noch einmal ausgeführt.
Einige Tipps für das Programmieren von Python Produkten:

6 Nachteile von Zope [toc]

Wer aufgrund der Nachteile etwas misstrauisch geworden ist, sollte sich Quixote ansehen. Dabei handelt sich um ein einfaches Framework um mit Python Web-Anwedungen zu entwickeln. Es ist einiges kleiner und flexibler als Zope.

7 Persönliche Einschätzung zu Zope [toc]

Ich habe mit mehreren Methoden Webseiten erstellt: Keine dieser Lösungen gibt mir die Flexibilität von Zope. Die besonderen Stärken sind für mich die objektorientierte Datenbank ZODB und die Programmiersprache Python.

Zope ist nach meiner Ansicht in folgenden beiden Bereichen sinnvoll:
  Einsatzbereich Umsetzung
1. Fall: Gemeinsames Erstellen von dynamischen Webseiten: Wenn der Inhalt hauptsächlich aus statischen Seiten besteht, können leicht mehrere Leute gemeinsam an den Seiten arbeiten. Verwenden von DTML bzw. ZPT. Editieren per Web-Browser oder FTP.
2. Fall: Programmierung von individuellen Lösungen: Die Möglichkeit mittels http oder XML-RPC auf eine objektorientierte Datenbank zuzugreifen ist sehr flexibel. Programmieren von Python Produkten.


Ich bevorzuge Fall 2. Wenn man nicht auf bestimmte Python Produkte (z.B. ZCatalog) angewiesen ist, würde ich sogar auf Zope verzichten und mittels Quixote+ZODB arbeiten.

8 FAQ [toc]

9 Glossar [toc]

10 Links [toc]

11 About [toc]

Diese Seite entstand im Rahmen meines Zope-Vortrages bei der Linux User Group Dresden am 20. Februar 2002.
Aktualisiert für einen Vortrag bei der Chemnitzer Linux-User Group 9. Mai 2003.

Hinweise sind sehr willkommen: Thomas Guettler.