By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
440,345 Members | 1,790 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 440,345 IT Pros & Developers. It's quick & easy.

Sharing code between server, client, and web

P: n/a
Hello everyone. This is a basic question of structure--something that
it's rather difficult to search for.

So, here's what there will be once this project is finished:

1) A server using Twisted and SQLAlchemy

2) A desktop client connecting to that server (with Twisted), using
wxPython

3) A web interface using Pylons and SQLAlchemy

The web interface and desktop app will be accessing the same data, but
with different privileges and features. Twisted will be used to
shuttle objects back and forth (using Perspective Broker). So, what I
would really like to do is this:

1) Define the SQLAlchemy tables and models only once, and share that
between the server and Pylons

2) Define methods on the models that can be used from the web
interface and desktop app--meaning the models need to be shared (to
some extent) with the client.

Nothing is written yet, but I already have code from a current project
to make SQLAlchemy and Twisted's Perspective Broker play nicely
together (that was an interesting exercise). What I'm not sure about,
though, is the best way to share some of the code all around. I've
thought of two possible ways, but I don't particularly like either:

1) Make the entire directory structure a package, so I can use
relative imports. This has the drawback that I'd need to package most
or all of the server code in with the client, which I really don't
want to do.

2) Have a separate lib directory that's symlinked into each place that
it's needed. Does anyone see any major drawbacks to this one? It
just rubs me the wrong way...

So, thanks for your help in advance, and if you need any more
information, please don't hesitate to ask.

Thanks,
Jeff
Mar 17 '08 #1
Share this question for a faster answer!
Share on Google+

This discussion thread is closed

Replies have been disabled for this discussion.