【发布时间】:2011-10-19 12:21:56
【问题描述】:
我需要在 C++ 中实现一个类,该类可以从非托管 C++ 调用 C# 函数并返回一个值。我已经通过命名管道使用 MIDL/RPC 绑定从 C++ 到 C++ 完成了这项工作,效果很好,但现在我的服务器应用程序正在迁移到 C#,但客户端必须保持非托管 C++(它是一个资源管理器扩展)。
我查看了各种方法,很多人建议使用 COM,据我了解,COM 不是用于 IPC/RPC,而是用于在客户端应用程序中托管服务对象。 COM 是否可以做到这一点,如果可以,有人可以指出我的良好参考或示例的方向吗?
编辑:
为了清楚起见,我不能使用托管代码,因为客户端 (DLL) 已加载到资源管理器的进程空间中。
我想要实现的是,当用户右键单击文件时,扩展程序会询问正在运行的服务(会话 0)以获取有关该文件的一些详细信息。这以前是通过 C++ C++ 客户端/服务器中的 RPC 完成的。现在服务器已升级到 C#,但我不确定我的选择是什么。 COM 是一种选择吗?
谢谢, J
【问题讨论】:
-
COM 在必要时使用 RPC,在进程外或跨单元的情况下。不必与 RPC 争吵当然非常好。您的问题中没有足够的细节来判断这是否适用。
-
已编辑以包含更多细节。