我不是组件对象模型 (COM) 方面的专家,但据我了解,它的工作原理如下: 程序 A(“服务器”程序)通过 TLB 文件公开 COM 接口(interface)。 客户端程序使用此接口(interface)并调用它的函数(所有底层的东西都是免费为您完成的)。 所以在这种情况下,当“服务器”程序正在运行并且“客户端”程序使用 COM 对象与“服务器”通信时。 每个程序(进程)都有自己的地址空间。 现在使用 MSXML 有点不同。 据我所知,msxmlX.dll 是一个 COM dll,但可以说当我在运行时隐式链接它(使用 msxmlX.h 和 msxmlX.lib)时,它被加载到与我的可执行文件相同的内存空间。 所以,在这种情况下,为什么在明显没有 IPC 进行时使用 COM 对象(msxml.dll 和“我的应用程序”都使用相同的内存并且可以像调用函数一样简单地“通信”)???
最佳答案
您可以在进程中、进程外或完全在另一台机器上创建 COM 对象。选择哪个取决于您的要求。
COM 旨在使软件组件可重用且独立于语言。 它不仅仅是您假设的促进 IPC 的机制。
关于c++ - MSXML 是如何工作的? (进程内 COM 对象的工作原理),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17750605/