I would probably have both servers implement identical functionality, which is that either can be initially contacted with the full load. Then, that server delegates some work to the second machine. Use asynchronous web service calls with a delegate to return when the entire task is finished. The second machine can pass info back the same way (asynch calls). If security is an issue, encrypt and authenticate. Make sure that all your objects are serializable, and the easiest way to send would be via soap messages with the serialized object, or you can open a TcpConnection or SSL connection and get a stream from that. As far as object management goes, you will have to have two copies of each object: one on the client, and one on the server. If you find you don't need to keep an object, then pass it on a delete it. I feel like this isn't really helping at all, but I hope I am wrong and I have answered some of your questions. Jeff