[ZODB-Dev] ZEO for GUI applications

Robert Gravina robert at gravina.com
Thu Mar 29 15:14:39 EDT 2007

Hello ZODB developers!

I think I asked something like this a very long time ago, but I'd  
like to ask again, in case anything has changed.

Here's my question in a short and long version:

short version:

Is anyone using ZEO to build mutliuser networked applications outside  
of Zope?

longer version:

I've been designing and coding (and re-designing and re-coding) a  
multi-user GUI application in Python for some time now. At this  
stage, it's mainily just GUI forms for editing data and some logic to  
share objects with users, keep them from editing the same entry at  
the same time etc. I'm currently using Twisted and a a python object- 
reational DB called Axiom, built on top of sqllite.

Basically, my problem boils down to these two things:

1) Making sure all clients have the latest version of objects as  
transactions are committed is difficult
2) Clients have a different view of the data than the server, and are  
therefore pretty "dumb". I would like to be able to maintain, search,  
create reports on the data etc. without having to write code to do  
remote procedure calls to the server all the time, or have a separate  
database running on the client with just enough information so I can  
search and display interesting data on the "main screen" of the app.  
I've also got lots of code swapping out object references for primary  
keys and back again on client/server sides.... it's a bit of a mess.

So, I was thinking each client uses a ClientStorage to access a ZEO  
server and I build my user authentication, GUI forms etc. on top of  

It would *greatly* simplify the application - I can concentrate on  
the domain problems and let ZODB/ZEO handle persistence and keeping  
clients in sync.

These are huge headaches for me right now, and I think switching to  
ZEO might help. Also I'm also looking to add undo functionality and a  
version of the app that runs standalone (i.e. just swap a  
FileStoreage for ClientStorage) at some point in the future. ZODB  
seems like it will make this a lot easier to to implement.

The thing is, I can't seem to find any references to applications  
(open source or otherwise) where developers have used ZEO in this  
way, and it makes me wonder if I'm trying to use it in a way for  
which it wasn't designed. The ZODB guide hints that this is possible,  
but everything I can find about ZEO on the web talks about using it  
to scale your Zope server.

Is anyone using ZEO like this?


More information about the ZODB-Dev mailing list