我在C / C ++中有一组函数,我需要接受调用并将值返回到远程位置的C / C ++代码,类似于Java平台上的RMI。使用RMI,Java方法通过rmiregistry设置,并在内存中保持可用以接受请求。我正在寻找C / C ++中的类似功能,但我对所有选项都感到困惑。这种情况是CORBA的用途吗?如果是这样,这仍然是最好的技术,或者有更好的选择。我读过有关XML-RPC,CORBA和其他一些内容但我不确定这些是我需要的。
感谢您的帮助。
迈克答案 0 :(得分:6)
这种情况是CORBA的用途,如果是这样,这仍然是最好的技术,或者有更好的选择。
是的,这就是CORBA打算解决的问题。它是“最好的”是主观的还是争论性的。 :)我可以说,根据我的个人经验,我不会错过我对CORBA的短暂体验,并建议你探索其他选择。
我读过有关XML-RPC,CORBA和其他一些内容但我不确定这些是我需要的内容。
您似乎意识到,您正在寻找任何实现RMI(也经常称为RPC)的技术。它不是内置于C / C ++。
在Linux上,有SunRPC。我还建议查看Google protocol buffers,它提供了一种序列化数据的机制以及一个用于定义RPC服务的接口。有several service implementations可用,但我没有使用服务实现的经验。
答案 1 :(得分:1)
在类Unix平台上,您可能正在寻找Sun RPC(远程过程调用)。
CORBA也是相关的,但对具有面向对象功能的语言具有更自然的绑定。
答案 2 :(得分:0)
在C或C ++中没有用于实现此功能的内置方法。也就是说有几个库可以实现这一目标。
如果您使用的是Windows,那么最佳答案可能是DCOM,这是操作系统本身的一部分。我不确定其他平台。
答案 3 :(得分:0)
我建议使用CORBA或任何可用的网络服务库
CORBA对你来说是一个合理的选择(虽然它现在可能有点旧技术)。在我以前的工作中,我已经使用CORBA好几年了。
我应该说,CORBA的学习曲线有点陡峭,你需要提供很多额外的设置,但一旦它完成正确,它就会变得顺畅使用。 (问题是需要一段时间才能正确使用它)
Webservice现在是一个事实上的工业标准,我相信C ++会有一些合理的实现和库。 CORBA涵盖了比WS更多的功能,但这些功能在简单系统中很少使用。