0

我正在更新旧的 C++ 服务以使用 WCF 而不是 RPC,并且在发送和接收句柄(HANDLE、void*..etc)时使用什么类型存在问题。在更新的服务中,我目前使用 IntPtr,但这在从 64 位版本的服务转换为 32 位版本时不起作用。IntPtr 不能反序列化,因为在内部它只是一个 void* ,这将根据您在哪个环境中运行而有所不同。

这解决了问题,因为 RPC 基础结构实际上从不发送句柄值,而是引用句柄的 GUID。此过程在以下文章中进行了描述:

请参阅上下文句柄部分

我正在寻找与此功能等效的 WCF。我可以自己在服务上编写类似的逻辑来执行此操作,甚至只是将 IntPtr 更改为 Int64,但我希望有类似于 RPC 方式的东西。

4

1 回答 1

1

我建议您重新设计任何这样的代码。传递句柄的最初原因可能不再有效。

此外,我假设您在本机客户端和服务器之间传递句柄,但使用 WCF,您将使用托管代码。一侧的托管代码将如何处理另一侧的“句柄”?例如,将文件路径发送到另一端并让另一端打开文件,而不是传递文件句柄,这可能更有意义。

这段代码可能是在 RPC 还不是一项旧技术的时候创建的。这表明它的其余部分也是使用与 RPC 相近的技术设计的。整个应用程序很可能需要针对现代世界进行重新设计。在重新设计中,您可能会使用 WCF 来做与目前使用 RPC 相同的事情但这不会是一对一的比赛。

于 2009-06-05T18:02:26.623 回答