PDF-Version - Linux User Group Augsburg

Werbung
Zope - Ein Webapplikationsserver
Jörg Lehmann
Linux User Group Augsburg e.V.
Jörg Lehmann, Linux User Group Augsburg (LUGA) e.V.
Linux-Infotag
1
Ausgangssituation
I statische → dynamische Seitengenerierung:
B aktuelle Inhalte
B verschiedene Quellen
B Interaktion mit dem Client (sessions)
⇒ Applikation auf dem Webserver
Jörg Lehmann, Linux User Group Augsburg (LUGA) e.V.
Linux-Infotag
2
Ausgangssituation
I statische → dynamische Seitengenerierung:
B aktuelle Inhalte
B verschiedene Quellen
B Interaktion mit dem Client (sessions)
⇒ Applikation auf dem Webserver
I Trennung von
B Inhalt (content): aus Datenbank, von fremden Webseiten
B Darstellung (presentation): zentrales Layout, verschiedene
Protokolle (HTTP, FTP, WebDAV)
B Programmlogik
⇒ Separierung der Entwicklungsaufgaben
Jörg Lehmann, Linux User Group Augsburg (LUGA) e.V.
Linux-Infotag
2
Lösungsansätze
I einfache Methoden der dynamischen Seitengenerierung:
– Apache mit server side includes (SSI)
– handgestrickte CGI-Skripten (mit Perl)
I speziell entwickelte Webskriptsprachen:
– PHP
– ASP
– WML (basierend auf Metahtml)
I Applikationsserver
– Java basiert: Enhydra (Tomcat), . . .
– Python basiert: Webware, Zope
– proprietär: Macromedia Cold Fusion, . . .
Jörg Lehmann, Linux User Group Augsburg (LUGA) e.V.
Linux-Infotag
3
Die Zope-Architektur
Jörg Lehmann, Linux User Group Augsburg (LUGA) e.V.
Linux-Infotag
4
Zope - ein grober Überblick
Zope besteht aus einer ganzen Reihe von Komponenten
I Webserver (ZServer)
I Objektdatenbank (ZODB)
I Skriptsprachen (ZPT, DTML, Python, Perl)
I Benutzer- und Rechteverwaltung
I Seitenindex (ZCatalog)
I Webinterface (Zope Management-Interface)
I Schnittstellen zu relationalen Datenbanken
I Sessionmanagement
I Content Management Framework (CMF)
I viele Zope-Produkte
Jörg Lehmann, Linux User Group Augsburg (LUGA) e.V.
Linux-Infotag
5
Zope - ein grober Überblick
Zope besteht aus einer ganzen Reihe von Komponenten
I Webserver (ZServer)
I Objektdatenbank (ZODB)
I Skriptsprachen (ZPT, DTML, Python, Perl)
I Benutzer- und Rechteverwaltung
I Seitenindex (ZCatalog)
I Webinterface (Zope Management-Interface)
I Schnittstellen zu relationalen Datenbanken
I Sessionmanagement
I Content Management Framework (CMF)
I viele Zope-Produkte
und das Ganze als Open Source Software!
Jörg Lehmann, Linux User Group Augsburg (LUGA) e.V.
Linux-Infotag
5
Zope Objektdatenbank ZODB
I liefert Persistenz von Zope-Objekten
I verschiedene Backends:
B file storage: Speicherung in Datei var/Data.fs
B Berkeley DB storage
B Oracle storage
I Undo-Fähigkeit
I Verwaltung mehrerer Versionen
I Verteilung möglich: Zope Enterprise Objects (ZEO)
Jörg Lehmann, Linux User Group Augsburg (LUGA) e.V.
Linux-Infotag
6
Templatesprachen für Webseiten → ZPT
I Bisherige Templatesprachen:
B Kommandos als HTML-Kommentar
• <!-#command args-> (SSI)
B Kommandos als Tag-Varianten
• <? command args> (PHP)
• <% command args> (ASP)
B Definition neuer Tags
• <x:include>. . . </x:include> (JSP)
• <dtml-var . . . > (DTML)
Jörg Lehmann, Linux User Group Augsburg (LUGA) e.V.
Linux-Infotag
7
Templatesprachen für Webseiten → ZPT
I Bisherige Templatesprachen:
B Kommandos als HTML-Kommentar
• <!-#command args-> (SSI)
B Kommandos als Tag-Varianten
• <? command args> (PHP)
• <% command args> (ASP)
B Definition neuer Tags
• <x:include>. . . </x:include> (JSP)
• <dtml-var . . . > (DTML)
I Probleme:
B statische Darstellung der Seiten?
B Bearbeiten mit Standardeditoren (Dreamweaver, GoLive,
etc.) nur eingeschränkt möglich!
Jörg Lehmann, Linux User Group Augsburg (LUGA) e.V.
Linux-Infotag
7
Templatesprachen für Webseiten → ZPT
I Bisherige Templatesprachen:
B Kommandos als HTML-Kommentar
• <!-#command args-> (SSI)
B Kommandos als Tag-Varianten
• <? command args> (PHP)
• <% command args> (ASP)
B Definition neuer Tags
• <x:include>. . . </x:include> (JSP)
• <dtml-var . . . > (DTML)
I Probleme:
B statische Darstellung der Seiten?
B Bearbeiten mit Standardeditoren (Dreamweaver, GoLive,
etc.) nur eingeschränkt möglich!
I ZPT: Beschreibung des dynamischen Verhaltens in Attributen
der HTML-Tags (→ TAL = Template Attribute Language)
Jörg Lehmann, Linux User Group Augsburg (LUGA) e.V.
Linux-Infotag
7
ZPT: ein einfaches Beispiel
<html>
<head>
<title tal:content="here/title">
Seitentitel
</title>
</head>
<base>
<h1 tal:content="here/title">
noch mal der Seitentitel...
</h1>
</base>
</html>
I immer gültiges Standard-HTML
I tal:content bewirkt Ersetzung des Inhalt des Tags
I here/title spezifiziert den einzufügenden Inhalt
Jörg Lehmann, Linux User Group Augsburg (LUGA) e.V.
Linux-Infotag
8
ZPT: etwas komplexer
<ul>
<li tal:repeat="lug python:’LUGA’, ’LUGAL’">
<a href="dummy"
tal:attributes="href string:http://www.${lug}.de/"
tal:content="lug">LUG</a>
</li>
</ul>
wird ausgewertet zu
<ul>
<li><a href="http://www.LUGA.de/">LUGA</a></li>
<li><a href="http://www.LUGAL.de/">LUGAL</a></li>
</ul>
I tal:repeat wiederholt entsprechenden Tag
I tal:attributes ersetzt Attribut eines Tags
I python: wertet Pythonausdruck aus
I string: fügt String mit Variablensubstitution à la Perl ein
Jörg Lehmann, Linux User Group Augsburg (LUGA) e.V.
Linux-Infotag
9
Python Skripten
## Script (Python) "objectsForStatus"
##parameters=status
##
"Gibt alle Objekte mit dem übergebenen Status zurück"
results=[]
for object in context.objectValues():
if object.getProperty(’status’) == status:
results.append(object)
return results
I zur Implementierung komplexerer Logik
I Editieren via Webinterface möglich
I nur eingeschränkte Funktionalität (aus Sicherheitsgründen)
Jörg Lehmann, Linux User Group Augsburg (LUGA) e.V.
Linux-Infotag
10
Zope Managementinterface (ZMI)
I erreichbar durch Anhängen von /manage an URL
I nur verfügbar bei entsprechender Authentifizerung und Rechten
I Funktionalität:
B Verwaltung des Zope-Servers
B Erzeugung und Veränderung von Zope Objekten:
• ZPTs
• Python Skripten
• DTML-Methoden und -Dokumente
• Benutzer und Rechte
• Inhaltsobjekte
• Versionen
Jörg Lehmann, Linux User Group Augsburg (LUGA) e.V.
Linux-Infotag
11
Content Management Framework (CMF)
I Trennung von
B Inhalt (content classes): in Python
B Darstellung (Skins): anpaßbar via Webinterface
I Metadaten nach dem Dublin Core Standard
I integriertes Workflowsystem
I Verwaltung von Mitgliedern:
B Anmeldung via Web
B Speicherung von Mitgliederdaten
B eigenes Homeverzeichnis
Jörg Lehmann, Linux User Group Augsburg (LUGA) e.V.
Linux-Infotag
12
Content Management Framework (CMF)
I Trennung von
B Inhalt (content classes): in Python
B Darstellung (Skins): anpaßbar via Webinterface
I Metadaten nach dem Dublin Core Standard
I integriertes Workflowsystem
I Verwaltung von Mitgliedern:
B Anmeldung via Web
B Speicherung von Mitgliederdaten
B eigenes Homeverzeichnis
I Komponentenarchitektur → Prototyp für zukünftiges Zope 3
Jörg Lehmann, Linux User Group Augsburg (LUGA) e.V.
Linux-Infotag
12
Schluß...
I Mehr Infos zu Zope unter
www.zope.org
I Dokumentation: Zope Book, kostenlos verfügbar unter
http://www.zope.org/Members/michel/ZB
Jörg Lehmann, Linux User Group Augsburg (LUGA) e.V.
Linux-Infotag
13
Schluß...
I Mehr Infos zu Zope unter
www.zope.org
I Dokumentation: Zope Book, kostenlos verfügbar unter
http://www.zope.org/Members/michel/ZB
I Zum Erstellen von Präsentationen mit LATEX
prosper.sourceforge.net
Jörg Lehmann, Linux User Group Augsburg (LUGA) e.V.
Linux-Infotag
13
Schluß...
I Mehr Infos zu Zope unter
www.zope.org
I Dokumentation: Zope Book, kostenlos verfügbar unter
http://www.zope.org/Members/michel/ZB
I Zum Erstellen von Präsentationen mit LATEX
prosper.sourceforge.net
1
f (z) =
2πi
I
f (w)
dw
w−z
und
d
i~ |ψ(t)i = H(t)|ψ(t)i
dt
|w−z|=r
Jörg Lehmann, Linux User Group Augsburg (LUGA) e.V.
Linux-Infotag
13
Herunterladen