在托管代码中是否可以获取对已经运行的进程(COM +组件)的引用并在其上调用方法?而不是实例化一个新对象,有没有办法指向一个已经运行的COM对象实例,以便.net代码具有对正在运行的进程的引用,就像它已经实例化它一样 - 调用它上面的方法就好像它已经在它自己的应用程序域中新建了一个?
答案 0 :(得分:0)
这一切都取决于COM组件。如果它被设计为单例(例如在ATL中直接支持)并且不在进程中,那么获取相同的对象是唯一的选择。
另一方面,即使用完了进程,大多数COM组件也无法执行此操作。单例代理/代理组件可以拥有相关组件的单个实例。
总结:它可以完成,但只有在组件的配合下,客户端代码“实例化”才能覆盖实例化以返回相同的对象。
WCF可能是另一条路线。默认情况下,WCF服务器运行时将为每个调用实例化一个新实例。但是您可以使用属性来覆盖它,并在单个实例中提供所有客户端请求(并且您必须处理并发)。同样,实现服务合同的类可以引用单例。