Verfasst: Sonntag 10. Juli 2005, 11:14
Damit es nicht heißt ich spucke große Töne habe aber außer ein paar Codezeilen nichts zu bieten, habe ich mich irgendwann zwischen gestern und heute mal darangesetzt und SQLator stark ausgebaut. So habe ich meine Idee verschiedener Server umgesetzt.
Dazu gibt es ein(en) SQLatorB - Backbone/Backend, das die Datenbank öffnet und sie als Pyro-Objekt bereitstellt. Als weitere Ebene kommt SQLatorD - XML-RPC, die XML-RPC Version des Servers, sie entspricht dem Ur-Server, den ich hier vorgestellt habe. Als weiteres Schmankerl kam aber noch der SQLatorD - async hinzu, der alternativ zum XML-RPC Server verwendbar ist. Dieser Server ist eine Art XML-RPC mit persistenten Verbindungen und mit asyncore realisiert.
Zuletzt ist noch ein Client benötigt, dazu schlage ich den SQLatorC vor, dieser kann immernoch per 'echten' XML-RPC auf den Server zugreifen, als auch per async auf den neuen asyncore-Server (benötigt nur socket, die PySQLite-Bindungen sind auf dem Client unnötig).
Ich habe die IPC durch Pyro gelöst, weil Pyro eine Menge sehr praktischer Features hat, die auch in Zukunft praktisch sein könnten (wie z.B. ein Tuplespace). Also wird zum verwenden von SQLator noch Pyro (ich habe version 3.4 verwendet solange 3.5 noch in der Beta-Phase ist) benötigt, ich denke aber, das dies kein allzugroßes Problem sein sollte, denn Pyro ist unter MIT-Lizenz und 100% pures Python, somit kann man es auch zur Not mit ins Tarball packen.
Beim Schreiben des Servers mit asyncore ist mir aufgefallen, dass Sam Rushings Module großartig sind. Ich werde nie wieder einen Server in Python ohne asyncore (oder Twisted) schreiben, denn Event-gesteurte Netzwerkprogrammierung "fühlt" sich einfach viel besser an und die Programme schreiben sich wesentlich besser.
Dazu gibt es ein(en) SQLatorB - Backbone/Backend, das die Datenbank öffnet und sie als Pyro-Objekt bereitstellt. Als weitere Ebene kommt SQLatorD - XML-RPC, die XML-RPC Version des Servers, sie entspricht dem Ur-Server, den ich hier vorgestellt habe. Als weiteres Schmankerl kam aber noch der SQLatorD - async hinzu, der alternativ zum XML-RPC Server verwendbar ist. Dieser Server ist eine Art XML-RPC mit persistenten Verbindungen und mit asyncore realisiert.
Zuletzt ist noch ein Client benötigt, dazu schlage ich den SQLatorC vor, dieser kann immernoch per 'echten' XML-RPC auf den Server zugreifen, als auch per async auf den neuen asyncore-Server (benötigt nur socket, die PySQLite-Bindungen sind auf dem Client unnötig).
Ich habe die IPC durch Pyro gelöst, weil Pyro eine Menge sehr praktischer Features hat, die auch in Zukunft praktisch sein könnten (wie z.B. ein Tuplespace). Also wird zum verwenden von SQLator noch Pyro (ich habe version 3.4 verwendet solange 3.5 noch in der Beta-Phase ist) benötigt, ich denke aber, das dies kein allzugroßes Problem sein sollte, denn Pyro ist unter MIT-Lizenz und 100% pures Python, somit kann man es auch zur Not mit ins Tarball packen.
Beim Schreiben des Servers mit asyncore ist mir aufgefallen, dass Sam Rushings Module großartig sind. Ich werde nie wieder einen Server in Python ohne asyncore (oder Twisted) schreiben, denn Event-gesteurte Netzwerkprogrammierung "fühlt" sich einfach viel besser an und die Programme schreiben sich wesentlich besser.