【问题标题】:Using RPC or something else使用 RPC 或其他东西
【发布时间】:2011-04-26 18:23:32
【问题描述】:

现在 RPC 是否仍在使用。还是rpc被其他技术取代了? 如果我用 C++ 开始新项目,我应该考虑使用 RPC 吗?

更多信息,因为我知道 RPC 仍在生产代码中使用:

我有两个应用程序可以相互交流。这两个在同一台机器上,但一个是服务,第二个是用户应用程序。用户应用每 2.3 秒向服务应用发送一次。 rpc的第二种用法。我有 1 个客户端和许多具有本地数据库的计算机。并且该客户端需要从这些计算机中获取一些数据。

我应该为这两个场景使用类似 Thrift 的东西吗?还是太大了?

【问题讨论】:

  • 这取决于你的新项目做什么。
  • 我在几个项目中使用过 D-Bus。

标签: c++ rpc


【解决方案1】:

Remote Procedure Call 是一个非常笼统的想法,而不是特定的东西。有ZeroC IceCORBAJava RMISOAPDRbWCF 以及更多围绕 RPC 概念构建的技术。它们确实被使用了。比如CORBA被一些Electronic Currency Exchanges(ECN)使用,ZeroC被SkypeHewlett-Packardsoap使用……好吧希望大家都用soap。

但很难回答您是否应该考虑这项技术。如果你应该比你应该使用什么解决方案。这取决于太多的细节。但要问的主要问题是——你想达到什么目标?这些都是严肃的技术,有些可以为您节省大量宝贵的时间,有些可以帮助您集成用不同语言编写的应用程序等。基本上,每种解决方案都有其优缺点。

如果您确定自己需要它,我建议您三思而后行,然后决定您在项目中的什么位置以及用途。如果您决定使用 RPC,我建议您使用 ZeroC Ice。它是免费的、开源的、可扩展的和可扩展的,支持大量现代编程语言,并且它周围的社区似乎非常活跃。

希望对您有所帮助。祝你好运!

【讨论】:

  • 您写道 RPC 非常通用。这个msdn.microsoft.com/en-us/library/… 是同一个通用概念还是别的什么?
  • 您的问题仅使用 C++ 和 rpc 进行了标记。鉴于这种情况,我会将其解释为“通用”
  • @userbb:概念是通用的,实现是不同的,而且它不能移植和/或与其他解决方案兼容(它们中的每一个都与另一个不兼容)。
  • ZeroC 对于商业、闭源项目来说不是免费的。
  • @Emile:取决于你所说的闭源商业项目。有一个在 GPL 下发布的版本,您确实可以将它用于 SAS 类项目,或者仅供公司内部使用。
【解决方案2】:

RPC在windows操作系统中被广泛使用。出于高性能考虑,我使用 RPC 调用缓存服务。

【讨论】:

  • 请注意 - RPC 并不比替代的、较低级别的解决方案更快。而且在大多数情况下,速度要慢得多。
  • 不是这样,只有直接硬件访问才能比rpc或者共享内存快,但是这种情况下进程之间的隔离就丢失了。
【解决方案3】:

如果您确实决定需要 RPC,我建议您查看Apache Thrift,它支持最常见的语言绑定并具有您将需要的大多数功能。对于您的需求,这可能有点过头了,但由于您没有指定它们,我想我会把它扔在那里。

【讨论】:

  • 我有两个应用程序可以相互交流。这两个在同一台机器上,但一个是服务,第二个是用户应用程序。用户应用每 2.3 秒发送一次服务。 rpc的第二种用法。我有 1 个客户端和许多具有本地数据库的计算机。该客户端需要从这些计算机中获取一些数据。
猜你喜欢
  • 2016-09-12
  • 1970-01-01
  • 2011-04-03
  • 2012-08-22
  • 1970-01-01
  • 1970-01-01
  • 2018-02-12
  • 1970-01-01
  • 2017-03-12
相关资源
最近更新 更多