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

时间:2016-01-20 06:35:53

标签: com com+ dcom

我知道我可以注册我的COM对象,以便在专用的dllhost.exe进程中托管inproc(通过标准com注册)和outproc(通过dcom)。

但是我的COM对象是否可以在external process中运行到消费者(如dcom),而不是在dllhost而不是我自己的进程中托管?

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

请不要提供其他协议作为答案,如果无法以这种方式主持COM就足够了答案。

谢谢!

1 个答案:

答案 0 :(得分:0)

COM的概念为DLL Surrogates

  

COM可以创建可以加载到的服务器DLL服务器   代理EXE流程。这结合了编写DLL服务器的便利性   具有可执行实现的好处。像开发工具一样   Microsoft Visual Studio有助于编写DLL服务器,但是   DLL服务器本身有限制

我们经常在后台看到运行(作为一个或多个实例)的

dllhost.exe实际上是默认的代理进程,但您可以编写自定义的进程:Writing a Custom Surrogate。这是很少见的事情。

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