XMPP 总结 优缺点 未来发展

1 Comment

7. XMPP 优缺点总结

经过实际编写了 XMPP 客户端 QTalk,我对 XMPP 的优缺点有了更深的认识。XMPP的优点和缺点均源自其开放性,其中对 XMPP 缺点的思考,可以解释为何目前 XMPP 应用功能过于单一,多用在轻量级的通信服务中。充分认识 XMPP 的缺点,有助于以后设计开发比 XMPP 更好的即时通信协议。

7.1 优点

XMPP 采取完全开放、可扩展的发展策略,是能成为跨越商业机构 (Google,Facebook 等) 的即时通信协议的重要保障。

7.1.1 完全开放

XMPP 完全开放,不受任何一家商业公司控制,其他商业公司或组织才能放心使用,不必害怕有一天某家公司将 XMPP 协议封闭。

7.1.2 可扩展

XMPP 采用 XML 作为数据传输的格式,是四大开放即时通讯协议 (其他三个为:IMPP、PRIM、SIP ) 中最灵活的。使用 XMPP 的公司或组织才能按需定制自己所需的功能。不少公司利用 XMPP 开发了即时聊天以外的应用,例如微博始祖 Twitter.com 在2006年上线过一个 XMPP 机器人 (twitter@twitter.com) [16],用户可以经绑定后使用任何 XMPP 帐号添加其为好友,在聊天窗口内向 Twitter.com 发表微博信息 (现在该功能已下线)。

7.2 缺点

XMPP 的缺点也来源于其开放性和扩展性,概括的说,XMPP 拥有严格的制订方 (IETF),却没有坚实的执行方。

7.2.1 各方使用的功能集不同

XMPP 的核心协议和常用扩展仅包含很有限的功能,如纯文本传输、文件传输。而应用 XMPP 的公司和组织只会实现己方觉得有用的扩展协议。例如,Gtalk 的服务器就没有支持群聊功能 [XEP-0045] Multi-User Chat [17],Gtalk 用户要使用群聊,需要自行查找第三方的群聊服务器,安全性和便捷性收到影响。

7.2.2 新功能难以推广

当一家公司或组织为 XMPP 加入扩展功能时,难于将其推广至整个 XMPP 网络。例如,由GTalk 提出的 Jingle 协议,及其后的一系列基于 Jingle 的文件传输、音视频流传输协议,虽然已经提上 IETF 标准化议程,但目前只有 Google 自家在使用。

新扩展协议从产生到被接受,会经历漫长的推广期。即使新协议非常实用,也不一定能部署到别家公司的产品上。例如 Facebook Chat 定位在轻量级的网页聊天上,其应用 Google Jingle 的需求不大。结果一个新扩展协议很可能只是只会在自家公司的产品上使用。而各家 XMPP 产品添加自己的扩展协议,造成功能集不一致,最终各个 XMPP 产品会形成自己的生态圈,相互之间只会通过 XMPP 核心部分的功能交集沟通。

7.3 如何约束开放?

XMPP 跨商业公司的成功是源自开放,而 XMPP 功能贫乏的失败也是源自开放。可见,开放的协议要取得成功,并不是采取多方定制、任其发展就可以达到的。那么,该如何促使一个开放协议获得成功?

7.3.1 先应用,后开放

我认为一个开放协议要向走向成功,应该先推出重量级应用,然后开放协议。

先推出重量级应用,即完全由己方制订应用所需的功能集,不采取多方讨论的形式。一个经过多方讨论的协议,很容易变成目前 XMPP 这样核心精简、扩展自选,实际上没有功能集的分裂状态。集权式的开发才能保证协议的核心特性足够丰富。

当一个应用被广泛使用后,再进行协议的开放,让第三方公司或组织自由使用。但是开放后,功能集和协议的制订仍然由己方主导,以免协议走向分裂。如果该应用没有被广泛应用,第三方公司或组织就不会产生应用需求,所以成功的关键仍然是这个应用的功能是否丰富,是否能吸引足够多的用户。

采用先应用、后开放模式取得成功的案例有 Twitter.com。Twitter 被称为 Web 时代开放应用的典范,但是目前的 Twitter API [18]并不是一开始就存在的,而是在发展壮大的过程中逐步发布的。依靠 Twitter API,Twitter 被嵌入到各种图片站、地理信息定位、阅读器分享等应用中。先应用、后开放的模式并不阻碍 Twitter 成为一个广泛接受的开放应用。

7.3.2 Google Wave 的启发

Google Wave,按照 Google 2009年5月27日在谷歌 I/O上的说法是“一种个人通信和协作工具”。它是一个Web服务、计算平台和通信协议,旨在合并电子邮件、即时通信、wiki和社交网络。 由悉尼分公司开发,目前已开始小范围公测。它有一个强大的实时协作和强大的拼写检查功能,可以自动翻译40种语言,以及许多其他的扩展。Google 2009年7月20日在官方博客宣布,在2009年9月30日,测试 Google Wave的用户数将扩大到约100,000。[19] Wave 是将来很有潜力的通讯应用。

Google Wave 的开发过程就是使用先应用,后开放的模式。Google Wave 首次发布的时候,大部分功能已经可以使用,同时承诺 Wave 会成为一个完全开源开放协议的应用。随后 Google 通过邀请注册的方式,逐步测试开放 API。目前 Wave 仍在持续开发中,不过开放进度并没有当初发布时那么让人眼前一亮。至2010年5月为止,Wave 的客户-服务端协议仍未发布,Wave 需要加快协议的定制工作。

有意思的是,根据 Google 发布的服务端协议文档[20],Wave 的服务-服务端通信使用了 XMPP 协议来交换数据包,但是 Wave 本身没有设计用于和现有 XMPP 服务通讯。这对现有 XMPP 使用者是一个启发:不一定要直接使用 XMPP 完成目标功能,而是借助 XMPP 实现即时性数据包交换,在 XMPP 之上搭建功能更完善的应用层,正如 HTTP 协议只是被用作传输协议。

[16] http://blog.twitter.com/2006/10/use-twitter-by-instant-message.html

[17] http://xmpp.org/extensions/xep-0045.html

[18] http://dev.twitter.com/

[19] http://zh.wikipedia.org/zh-cn/Google_Wave

[20] http://www.waveprotocol.org/draft-protocol-specs/draft-protocol-spec

One Comment (+add yours?)

  1. Meteor
    六 18, 2010 @ 14:18:55

    我很喜欢Google Wave.

    回复回复

Leave a Reply