通用二进制协议

时间:2008-12-09 11:24:17

标签: protocols

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

  • CORBA
  • ICE
  • AMQP
  • 节俭

这是被解雇的协议列表:

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

9 个答案:

答案 0 :(得分:13)

协议缓冲区项目肯定不是封闭源。

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

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

答案 1 :(得分:8)

我认为Protocol Buffers不是封闭源代码。页面含义不同,有源下载。

答案 2 :(得分:3)

很可能不是最好的候选人,但为了完整起见,我想补充一点binary encoding for XML

答案 3 :(得分:3)

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

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

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

答案 4 :(得分:2)

您可以查看ASN.1

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

答案 5 :(得分:2)

乔·阿姆斯特朗的UBF似乎没有流行起来,但它以高雅的设计满足了你的要求。

答案 6 :(得分:0)

我建议尝试使用RabbitMQ AMQP,并使用Protocol Buffers,XML或其他一些数据格式(如JSON)来品尝。除了相对简单和易于使用之外,它还允许您混合和匹配RPC和异步pubsub样式,并且跨语言,协议和平台具有良好的分布。但它可能不适合你的问题 - 这一切都取决于你想要做什么!干杯,亚历克西斯

答案 7 :(得分:0)

有一个从ZeroC到Ice的补丁本地支持Google协议缓冲区。

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

答案 8 :(得分:0)