远程过程调用

Lod*_*dle 4 c++ windows rpc

有没有人知道在windows(非.net)环境中进行远程过程调用的好方法?

我找不到有关如何执行此操作的详细信息,msdn只有.net版本.

.

编辑:

谢谢你到目前为止的答案.我需要它是与同一台计算机上的服务进行通信,该计算机将进度报告发送回"客户端".我在rpc中感兴趣的原因是因为vistas uac以及服务无法与普通应用程序交谈,除非他们使用rpc或管道.看看管道,它们似乎完全基于文本,我的印象是rpc可以传递强类型值.

我也会研究DCOM.

Las*_*lan 6

如果您只想在同一台机器上的进程之间进行通信,那么boost :: interprocess是一种很酷的方式,可以让它们进行通信.

更多特定于Windows的解决方案是共享内存映射文件和系统全局互斥/信号或命名管道.

boost :: serialize和google 协议缓冲区是将您在进程之间发送的数据转换为二进制字符串的方法,二进制字符串较少依赖于结构打包和不同可执行文件之间可能不同的其他内容.

boost :: interprocess,boost :: serialize和协议缓冲区应该是独立于平台的,所以从技术上讲它也可以在Linux/Mac上运行!


Con*_*lls 5

DCOM具有基于DCE RPC的远程过程调用机制.如果您将系统构建为COM组件或将COM包装器放在要公开的API上,则可以使用它.除此之外,您可能希望通过更深入地了解问题的具体细节来扩展您的问题.我真的没有处理问题是否有任何方面可能妨碍使用DCOM.

另一种方法是在应用程序周围放置Web服务包装器.Web服务(当然基于SOAP或XML-RPC的服务)实际上只是使用HTTP作为传输协议的RPC机制.