我正在尝试为我的下一个分布式应用程序找到合适的协议中间件。我在过去几天发现了几个规格,并想知道我是否错过了一个重要规格?它应该是一个二进制协议,支持RPC并且可选地具有不同语言的开源实现。这是我找到的协议列表:
这是被解雇的协议列表:
答案 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)
答案 6 :(得分:0)
我建议尝试使用RabbitMQ AMQP,并使用Protocol Buffers,XML或其他一些数据格式(如JSON)来品尝。除了相对简单和易于使用之外,它还允许您混合和匹配RPC和异步pubsub样式,并且跨语言,协议和平台具有良好的分布。但它可能不适合你的问题 - 这一切都取决于你想要做什么!干杯,亚历克西斯
答案 7 :(得分:0)
有一个从ZeroC到Ice的补丁本地支持Google协议缓冲区。
答案 8 :(得分:0)