An in-process server is a component where our objects run inside the client's process. Each client essentially gets its own private copy of our component - and therefore a copy of all our objects.
In-process servers avoid the overhead of running in their own process, thus conserving resources and memory for the system. Additionally, the communication between the client and our objects does not have to go from one process to another - and so we avoid almost all of the overhead imposed by COM on out-of-process server communication.
Since in-process components run inside the client's process, we use less memory and we don't create extra processes. We'll also improve performance, but we do give up some capabilities. Since each server is running in each client's process space, our business objects are effectively split up - so they can't share resources or memory with each other, but only with each client.
By judicious use of out-of-process servers combined with in-process servers, we can create applications that draw on the strengths of each. I will demonstrate this at various points throughout the book.