5

我正在分发一个独立的应用程序。应用程序的每个实例都必须能够发送和接收查询。

要求:

  1. 语言 - C++
  2. 规模 - 小。一次可能是 5 个实例
  3. 平台无关
  4. 传输的数据量预计会很高(最坏情况下的原始图像)

我不想使用 RPC,因为它需要运行注册表服务。我认为 CORBA 和 SOAP 的开销太大了。我有点决定使用自定义协议,但只是想听听是否有更好的方法。

谢谢。

4

6 回答 6

6

Protocol Buffers听起来很合适,受 C++ 支持,跨平台,专为高性能而设计。

于 2009-07-27T18:38:13.757 回答
5

MPI就是为此而设计的,它肯定比 Corba 等更容易使用。
当你发现你的小规模分布式应用程序变成了一个非常大规模的分布式应用程序时,它就会扩展!

于 2009-07-27T18:40:14.547 回答
4

为什么不使用http POST

  • 根据需要轻量级(打开套接字,发送 POST 字符串),或者如果您想要健壮性,请使用 http 库。
  • 易于管理服务器端的权限(只需使用 apache 或 iis)
  • 内置日志记录(在网络服务器端)
  • 没有扩展问题(网络服务器已经解决了这些问题)
  • 通常系统不需要 http 套接字的权限(xp 需要原始套接字)。
  • 用于识别字段和数据的键/值对。
  • 您可以使用 firefox 插件对其进行测试。
  • 如果速度是一个问题,您可以轻松设置超时并重新发送。
  • 您不必担心防火墙,因为默认情况下几乎总是允许使用 http。
  • 使用端口嗅探器轻松调试。
  • 所有服务器端代码和大部分客户端代码都是为您编写的。
于 2009-07-27T18:45:00.357 回答
3

我建议将 HTTP 协议与实际嵌入在您的应用程序中的小型网络服务器一起使用。这很容易上手,并且有很多优秀的可嵌入网络服务器——我个人推荐Mongoose

于 2009-07-27T18:52:17.737 回答
3

我会看看传播工具包。嗯,它是 C,但存在 C++ 绑定,而且你自己也很容易推出。你的听起来很像一些我已经成功使用它的项目(尽管没有任何绑定)。

从项目的网站:

Spread 是一个开源工具包,它提供了一种高性能的消息传递服务,该服务对跨局域网和广域网的故障具有弹性。Spread 用作分布式应用程序的统一消息总线,并提供高度调整的应用程序级多播、组通信和点对点支持。传播服务的范围从可靠的消息传递到具有传递保证的完全有序的消息。

Spread 可用于许多分布式应用程序,这些应用程序需要在各种成员子集之间进行高可靠性、高性能和鲁棒的通信。该工具包旨在封装异步网络的挑战性方面,并支持构建可靠且可扩展的分布式应用程序。

Spread 由与用户应用程序链接的库、在作为处理器组的一部分的每台计算机上运行的二进制守护程序以及各种实用程序和演示程序组成。

Spread提供的一些服务和好处:

  • 可靠且可扩展的消息传递和群组通信。
  • 一个非常强大但简单的 API 简化了分布式架构的构建。
  • 易于使用、部署和维护。
  • 从一个局域网到复杂的广域网的高度可扩展性。
  • 支持具有不同成员集的数千个组。
  • 在出现机器故障、进程崩溃和恢复以及网络分区和合并的情况下启用消息可靠性。
  • 为消息提供一系列可靠性、排序和稳定性保证。
  • 强调稳健性和高性能。
  • 完全分布式算法,没有中心故障点。

我知道,基于这一切,听起来它一定是复杂的东西,可能对任何小项目来说都是多余的——但实际上并非如此:基本用法非常简单。当然,它在底层很复杂,因为该工具包解决的问题本质上是相当困难的;但至少我从来不用看那里,就像我从来没有检查过 TCP 是如何工作的一样,即使我一直在广泛使用它。

(不,我不以任何方式为该项目工作。只是一个快乐的用户。)

于 2009-07-27T19:40:16.143 回答
1

I would suggest you to evaluate RCF from deltavsoft, it sounds like a good fit as it is tailored for c++ application and it's free.

http://deltavsoft.com/w/

于 2011-10-20T00:36:18.730 回答