Reputation: 503
I'm not expert in Component Object Model (COM), but from what I understand it works something like this: Program A (a "server" program) exposes COM interface lets say via TLB file. A client program uses this interface and call it's functions (and all the underlying stuff is done for you free of charge). So in this case when the "Server" program is running and "Client" program communicates with the "Server" using COM object. Each one of the programs (processes) has it own address space. Now with MSXML it is a bit different. From what I understand, msxmlX.dll is a COM dll, but lets say when I implicitly link against it (using msxmlX.h and msxmlX.lib) during run time it's being loaded to the same memory space as my executable. So, in this case WHY COM object being used when there is clearly no IPC going on (both msxml.dll and "my app" are using the same memory and can "communicate" as simple as calling a function) ???
Upvotes: 1
Views: 292
Reputation: 23046
You can create COM objects either in process, out of process, or on another machine completely. The choice of which depends on what your requirements are.
COM is designed to make software components reusable and language independent. It's not just a mechanism to facilitate IPC as you assume.
Upvotes: 1