【发布时间】:2009-05-26 13:11:47
【问题描述】:
是否可以在托管代码中获取对已运行进程(COM+ 组件)的引用并在其上调用方法?除了实例化一个新对象之外,有没有一种方法可以指向一个已经运行的 COM 对象实例,这样 .net 代码就可以引用正在运行的进程,就像它已经实例化它一样 - 像调用它的方法一样它在自己的应用程序域中更新了一个?
【问题讨论】:
标签: .net windows process reference
是否可以在托管代码中获取对已运行进程(COM+ 组件)的引用并在其上调用方法?除了实例化一个新对象之外,有没有一种方法可以指向一个已经运行的 COM 对象实例,这样 .net 代码就可以引用正在运行的进程,就像它已经实例化它一样 - 像调用它的方法一样它在自己的应用程序域中更新了一个?
【问题讨论】:
标签: .net windows process reference
这完全取决于 COM 组件。如果它被设计为单例(例如,这在 ATL 中直接支持)并且不在进程中,那么获取相同的对象是唯一的选择。
另一方面,大多数 COM 组件不提供执行此操作的功能,即使进程耗尽。单个代理/代理组件可以拥有相关组件的单个实例。
总结:这是可以做到的,但只有在组件的合作下,客户端代码才能通过覆盖实例化以返回相同的对象来“实例化”。
WCF 可能是另一条路线。默认情况下,WCF 服务器运行时将为每个调用实例化一个新实例。但是您可以使用属性来覆盖它,并在单个实例中服务所有客户端请求(并且您必须处理并发)。同样,实现服务契约的类可以引用单例。
【讨论】: