This sample app is an example of a simple "pass through" server. It has one method called "RunServer" which takes a ProgID paramater of the server that is to be started. The server specified by the ProgID is run on the same machine that the pass through server is running on and it is run in the same process space as the pass through server. RunServer returns the handle of the started server so that the client can talk directly to the requested server. Because the pass through server is single use server, every client that creates it will get its own personal instance of the pass through server... along with its own process space and thread of execution. By using the pass through server, client applications can create their own independent execution context on a remote server and then start and stop InProc servers within that context as needed. Because InProc servers can be started very quickly and because they are run within the pass through server's process space, this is a much more efficient execution model than solely using out-of-process servers.