42

概述

我在客户端(Android 手机)和服务器(Windows Server)之间来回发送消息。使用 TCP 上的持久连接,哪种协议是最好的解决方案。我正在关注性能、可扩展性、消息大小和电池寿命。消息必须按顺序到达目的地,不能重复。

MQTT

这似乎是更好的解决方案,但似乎很少有大量用户的大型实施示例。我不确定我是否可以将它集成到 Windows 服务器中,或者它是否必须是另一个正在运行的应用程序或服务器。最后,总体上似乎缺乏关于它的信息。

XMPP

这似乎有很多实现、示例,甚至一本书:)。然而,主要目的似乎是用于即时通讯客户端和谷歌谈话之类的东西。这将是服务器和客户端之间消息传递的最佳解决方案吗?我知道目前 XMPP 主要用于客户端到服务器到客户端的架构。

如果我错了,请纠正我,并提前感谢任何指导。

4

3 回答 3

67

这取决于您要做什么以及您正在运行什么硬件。

MQTT 的保活流量非常低。XMPP 是一种 IM 协议,在处理所有客户端之间的状态消息时开销要高得多。

如果您有一个小的内存占用限制,那么必须处理 XML 解析器可能会导致无法使用 XMPP。

请记住,MQTT 代表消息队列遥测传输,即它是一种传输协议,根本不定义消息格式 - 您必须提供它;XMPP 是一种即时消息协议,它仔细定义了所有消息格式并要求所有消息都采用 XML 格式。

除此之外:MQTT 是一个发布订阅协议,XMPP 是一个即时通讯协议,可以扩展(使用 XEP-0060)以支持发布订阅。在构建系统时需要考虑这一点。

我们发现 MQTT 是安静的成功者。你的里程可能会有所不同。

这一切都取决于...

追踪 LinkedIn 最近发布的公告,他们在其中讨论了他们在移动应用程序中使用 MQTT。

干杯马克

(顺便说一句,Andy 对我们的提及略有不同。我们在澳大利亚布里斯班昆士兰大学教育创新与技术中心 (CEIT))

于 2011-08-20T12:02:28.113 回答
13

我认为简而言之,MQTT 相对于 XMPP 的优势是:

  • 吞吐能力:更少的开销,更轻量级
  • 二进制与纯文本
  • QoS 到位(即发即弃、至少一次和精确一次)
  • 就地发布/订阅(XMPP 需要扩展 XEP-0060)
  • 不需要 XML 解析器
于 2015-06-25T05:54:31.493 回答
7

我认为您可能正在纠正您对 XMPP 的评估,因为它主要是面向聊天的协议 - 它也是相当重量级的,并且广泛使用 XML 使其冗长。我知道布里斯班大学 CEIT 的人们专门研究了这两种协议的差异和最佳用途。MQTT 非常轻量级和低功耗 - 它已用于遥测和传感器应用超过 10 年,并已被 IBM 和合作伙伴大规模部署。人们现在发现像这样的简单协议非常适合移动开发。

你到底想要达到什么目标?mqtt.org 网站旨在提供良好的内容链接。还有关于它的 IRC 频道和邮件列表。我们能帮你什么吗?

于 2011-08-20T11:15:43.577 回答