6

我正在尝试为我的下一个分布式应用程序找到合适的协议中间件。在过去的几天里,我找到了几个规格,想知道我是否错过了一个重要的规格?它应该是二进制协议,支持 RPC,并且可以选择具有不同语言的开源实现。这是我找到的协议列表:

  • 科尔巴
  • AMQP
  • 节约

这是被解雇的协议列表:

  • 基于 XML 的协议,因为它们是基于文本的(XML-RCP、SOAP、手卷等)
  • 协议缓冲区(闭源)
  • COM(仅限 Windows)
4

9 回答 9

14

Protocol Buffers 项目绝对不是封闭源代码。

您对哪种语言/平台感兴趣?

请注意,虽然 Protocol Buffers 中有stub RPC 支持,但 Google 尚未发布其实际的 RPC 层,因此您必须提供自己的。考虑到基本上你会传递一个请求消息并返回一个响应消息,将它分层到现有协议(例如 HTTP POST)上并不

于 2008-12-09T11:28:25.040 回答
8

我不认为协议缓冲区是封闭源代码的。该页面暗示不同,并且有源下载。

于 2008-12-09T11:26:19.193 回答
3

很可能不是最好的候选人,但为了完整起见,我想补充一点,XML 有一个二进制编码

于 2008-12-09T11:51:20.173 回答
3

我建议您重新考虑 Google 协议缓冲区。所有主要平台都有许多开源实现,包括 Google 自己发布的 C++/Java/Python。

正如上面 Jon Skeet 所提到的,PB 规范没有定义 RPC 模型,但是使用 PB 定义自己的 RPC 非常容易。

或者,您可以查看 ASN.1。有大量使用 ASN.1 的应用程序。

于 2008-12-29T22:15:35.797 回答
2

你可以看看ASN.1

它用于在许多其他协议(例如 SNMP、LDAP)中编码和传输二进制数据,尽管 ASN.1 本身并没有定义传输协议。

于 2008-12-09T11:30:05.223 回答
2

Joe Armstrong 的UBF似乎并没有流行起来,但它通过有品位的设计满足了您的要求。

于 2009-01-10T11:22:43.733 回答
0

我建议尝试 RabbitMQ AMQP,并使用协议缓冲区、XML 或其他一些数据格式(如 JSON)来品尝。除了相对简单和容易上手之外,这还允许您混合和匹配 RPC 和异步 pubsub 样式,并且可以很好地跨语言、协议和平台传播。但这可能不适合您的问题——这完全取决于您要做什么!干杯,亚历克西斯

于 2009-01-10T10:19:52.613 回答
0

从 ZeroC 到 Ice 有一个补丁可以原生支持 Google Protocol Buffers。

http://www.zeroc.com/labs/protobuf/

于 2009-04-02T20:50:44.603 回答
0

Flavor风味,用于定义 MPEG-4

于 2012-05-03T06:47:29.913 回答