我正在尝试为我的下一个分布式应用程序找到合适的协议中间件。在过去的几天里,我找到了几个规格,想知道我是否错过了一个重要的规格?它应该是二进制协议,支持 RPC,并且可以选择具有不同语言的开源实现。这是我找到的协议列表:
- 科尔巴
- 冰
- AMQP
- 节约
这是被解雇的协议列表:
- 基于 XML 的协议,因为它们是基于文本的(XML-RCP、SOAP、手卷等)
- 协议缓冲区(闭源)
- COM(仅限 Windows)
我正在尝试为我的下一个分布式应用程序找到合适的协议中间件。在过去的几天里,我找到了几个规格,想知道我是否错过了一个重要的规格?它应该是二进制协议,支持 RPC,并且可以选择具有不同语言的开源实现。这是我找到的协议列表:
这是被解雇的协议列表:
Protocol Buffers 项目绝对不是封闭源代码。
您对哪种语言/平台感兴趣?
请注意,虽然 Protocol Buffers 中有stub RPC 支持,但 Google 尚未发布其实际的 RPC 层,因此您必须提供自己的。考虑到基本上你会传递一个请求消息并返回一个响应消息,将它分层到现有协议(例如 HTTP POST)上并不难。
我不认为协议缓冲区是封闭源代码的。该页面暗示不同,并且有源下载。
很可能不是最好的候选人,但为了完整起见,我想补充一点,XML 有一个二进制编码。
我建议您重新考虑 Google 协议缓冲区。所有主要平台都有许多开源实现,包括 Google 自己发布的 C++/Java/Python。
正如上面 Jon Skeet 所提到的,PB 规范没有定义 RPC 模型,但是使用 PB 定义自己的 RPC 非常容易。
或者,您可以查看 ASN.1。有大量使用 ASN.1 的应用程序。
你可以看看ASN.1。
它用于在许多其他协议(例如 SNMP、LDAP)中编码和传输二进制数据,尽管 ASN.1 本身并没有定义传输协议。
Joe Armstrong 的UBF似乎并没有流行起来,但它通过有品位的设计满足了您的要求。
我建议尝试 RabbitMQ AMQP,并使用协议缓冲区、XML 或其他一些数据格式(如 JSON)来品尝。除了相对简单和容易上手之外,这还允许您混合和匹配 RPC 和异步 pubsub 样式,并且可以很好地跨语言、协议和平台传播。但这可能不适合您的问题——这完全取决于您要做什么!干杯,亚历克西斯
从 ZeroC 到 Ice 有一个补丁可以原生支持 Google Protocol Buffers。
Flavor风味,用于定义 MPEG-4