我知道我可以注册我的COM对象,以便在专用的dllhost.exe进程中托管inproc
(通过标准com注册)和outproc
(通过dcom)。
但是我的COM对象是否可以在external process
中运行到消费者(如dcom),而不是在dllhost而不是我自己的进程中托管?
我的目标是让一个进程(windows服务)运行我的逻辑,并只托管一个COM对象,以便其他进程可以使用简单的CoCreateInstance
COM对象与我通信。有可能吗?
请不要提供其他协议作为答案,如果无法以这种方式主持COM就足够了答案。
谢谢!
答案 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)。