An in-process component is implemented as a DLL, and runs in the same process space as its client app, enabling the most efficient communication between client and component.Each client app that uses the component starts a new instance of it.
An out of process component is implemented as an EXE, and unlike a
dll, runs in its own process space. As a result, exe’s are slower then
because communications between client and component must be marshalled across process boundaries. A single instance of an out of process component can service many clients.