Neil,
> just a quick question about state. If the client creates a server object, and retains a reference to that object, isn't state maintained between method calls to the server? Why would the server lose the context (any tables open, SETs put in place?
This goes to my previous comment about designing for scalability. Yes, in some cases you can maintain state, but it depends on how you set up your automation component. For a DCOM EXE, you would need to indicate in the project manager (Project Info/Servers) that you want to build it with Single-Use Instancing, so each client instantiation loads up another copy on the server.
With dll's running in MTS, you can avoid calling the SetComplete, I believe, and keep the state of your client instance alive.
Both of these obviously could have big implications for performance and scalability, since they directly impact server resources, and therefore are not usually recommended.