在我的进程中托管一个COM服务器

在我的进程中托管一个COM服务器,com,com+,dcom,Com,Com+,Dcom,我知道我可以在专用的dllhost.exe进程中注册要使用的COM对象inproc(通过标准COM注册)和outproc(通过dcom) 但是有没有可能让我的COM对象在消费者(如dcom)的外部进程中运行,而不是在dllhost而不是我自己的进程中运行 我的目标是让一个进程(windows服务)运行我的逻辑,只托管一个COM对象,以便其他进程可以使用COM对象的simpleCoCreateInstance与我通信。可能吗 请不要提供其他协议作为答案,如果不可能承载COM,那么这种方式就足够了

我知道我可以在专用的dllhost.exe进程中注册要使用的COM对象
inproc
(通过标准COM注册)和
outproc
(通过dcom)

但是有没有可能让我的COM对象在消费者(如dcom)的
外部进程中运行,而不是在dllhost而不是我自己的进程中运行

我的目标是让一个进程(windows服务)运行我的逻辑,只托管一个COM对象,以便其他进程可以使用COM对象的simple
CoCreateInstance
与我通信。可能吗

请不要提供其他协议作为答案,如果不可能承载COM,那么这种方式就足够了

谢谢

COM的概念是:

COM使创建DLL服务器成为可能,这些服务器可以加载到 代理EXE进程。这结合了编写DLL服务器的方便性 具有可执行实现的优点。开发工具,如 Microsoft Visual Studio促进了DLL服务器的编写,但是 DLL服务器本身有限制

dllhost.exe
我们经常看到在后台运行(作为一个或多个实例)实际上是默认的代理进程,但您可以编写一个自定义的代理进程:。这是很少见的


然而,当您说“托管一个COM对象,以便其他进程可以使用COM对象的简单CoCreateInstance与我通信”时,我认为您不需要所有这些管道(实现起来可能相当复杂)。只需从Windows服务托管并注册COM对象。它被称为进程内COM服务器(DLL)。

COM有DLL代理的概念:。dllhost.exe是默认代理进程,您可以编写自定义代理进程:。然而,当您说“托管一个COM对象,以便其他进程可以使用COM对象的简单CoCreateInstance与我通信”时,您不需要所有(复杂的)管道。只需从Windows服务托管并注册COM对象。它称为进程外COM服务器。当您使用
ATL project
模板创建新的Visual Studio项目时,向导将要求您选择是将其托管在dll、exe还是service exe中。这可能是最简单的开始方式。请看这里的第二段:@SimonMourier-如果您将您的评论移动到回复,我将标记为答案。无论如何谢谢你!!