Hallo Phlegma!Phlegma hat geschrieben:weil ich eben einen Eintrag zu Applicationservern in einem Browsergamesforum gelesen habe. Dort wird C# und Java angepriesen, aber mit Zope gibt es ja auch einen in Python. Wie gut eignet dieser sich für
1. Ajaxtortur von vielen kleinen Anfragen
2. einen Daemon, der ständig eine Datenbank nach eintretenden Events fragt?
Zope ist ein großer Applikationsserver -- basierend auf einer Objektdatenbank. Zope kann viel, aber genau so wie Pylons oder Django, würde ich Zope **nicht** für so etwas verwenden. Zope kümmert sich **automatisch** um Dinge wie Authentifizierung und Zugriffsbeschränkungen -- und noch einige Dinge mehr. Das ist für manche Projekte ein Vorteil. Aber für so etwas was du vor hast, ist das ein Nachteil, weil Ressourcen verbraten werden, die du anderweiteig besser einsetzen kannst.
Wie ich dieses Projekt angehen würde? Ganz klar, mit Cheetah, CherryPy, mod_wsgi und dem Apachen. Im Hintergrund werden die Daten von PostgreSQL verwaltet.
Cheetah -- ganz einfach, weil ich mich daran gewöhnt habe und ich es für eine hervorragende pythonnahe Vorlagensprache halte.
CherryPy ist ein kleiner Applikationsserver, der mir genau die Arbeit abnimmt die sowiso erledigt werden muss -- und nicht mehr. CherryPy kann auch direkt XMLRPC anbieten (http://paste.pocoo.org/show/106541/). Auch JsonRPC ist kein Problem für CherryPy. Sessionverwaltung und Authentifizierung kann dazugeschaltet werden. Die Authentifizierung könnte aber auch der Apache erledigen.
mod_wsgi dient als schnelle Schnittstelle zum Apachen
Und der Apache liefert alles aus. Der Apache kann statischen Content (z.B. Bilder) sehr schnell ausliefern. Deshalb übernimmt dieser die Auslieferung dieser Dateien direkt -- ohne den Umweg über mod_wsgi und CherryPy machen zu müssen.
Der Apache kann auch so eingestellt werden, dass dieser Daten cached. Wenn man das richtig ausnutzt, dann reduzieren sich die Anfragen an CherryPy.
PostgreSQL arbeitet im Hintergrund und verwaltet die Daten. CherryPy öffnet mehrere Threads, die gleichzeitig auf die Datenbank zugreifen und PostgreSQL kann damit sehr gut umgehen.
Was will ich damit sagen? Nimm (in deinem Fall) kleine Tools und setze diese zu einer großen Anwendung zusammen. Lasse dir nicht von irgendeinem großen Framework oder Applikationsserver die Aufgaben und Werkzeuge diktieren.
mfg
Gerold
