關於即時通信技術選擇的一點淺見

目前即時通信主要有四種協議:即時信息和空間協議(IMPP)、空間和即時信息協議(PRIM)、針對即時通訊和空間平衡擴充的進程開始協議SIP(SIMPLE)以及XMPP。到目前,主流的主要是XMPP和SIP/SIMPLE。

SIMPLE利用SIP來發送presence信息。SIP是IETF中爲終端制定的協議。要談SIMPLE,首先要談談SIP,在傳統的電路交換向分組交換演進的過程中,SIP起到了很關鍵的作用,IMS中的核心協議就是SIP,並已SIP作爲中介來實現PSTN,VOIP,移動網絡的融合。所以從強調開放性的Internet網絡和強調壟斷性的電信網絡兩個網絡屬性來看的話,SIP其實更傾向於後者。SIP包含着完善的網絡互通設計,所以是VOIP的首選。如果你的即時通信軟件還想與傳統的電話網絡互連的話,SIP應該是首選。SIP通過SDP來描述媒體流,並通過信令交換主被叫的媒體流信息,例如IP地址和端口,再依靠如實時協議(RTP)來進行實際上的媒體連接。這個媒體連接不僅僅包括語音,也包括視頻等數據流。所以SIP的即時通信會話是點對點的,但信令流是依據網絡配置逐級路由傳遞的。而且網絡延伸的範圍包括PC網絡客戶端,PSTN的傳統電話,移動終端,VOIP模擬電話終端,VOIP的小交網絡,接入網等等,無所不到。要支持這麼多網絡,協議的互連互通,所以關於SIP的相關擴展就可想而知,這其中還要包括網管,計費等功能的協調與支持,所以SIP的電信網絡屬性應該更重一些。SIMPLE是SIP爲了支持即時通信的新特點做出的擴展,其實是向Internet網絡的迴歸。

如果我們選擇SIP作爲即時通信的實現方向的話,應該說沒有問題,正所謂條條大路通羅馬,只要通信質量好,網絡負載輕,系統安全,業務功能齊全,其實不在乎用什麼技術。但前提是你實力足夠強,技術足夠牛。如果是對於搞新產品的小公司來說,如果你不是要去搞VOIP,選擇SIP,比較容易走上封閉的羊腸小道。雖然你實現了即時通信的業務功能,但你吸引新用戶的能力有限,在現在日益強調網絡社交屬性的今天,很難想象你能吸引多少用戶去安裝一個新的即時通信的客戶端,用戶一般只會用他們常用的MSN,QQ,Skype等等,對於新的即時通信客戶端,他們已經裝到反胃了。

但如果你實力足夠強,這也不是絕對的,MSN也是基於SIP的,隨着即時通信的功能日益擴展,私有的協議在不斷擴展,你把你的私有協議開放出來,你也會有追隨者幫你寫XMPP的網關適配模塊,藉助XMPP與其它IM進行互聯互通。但對新起步的公司來說,好像不是那麼容易,那就得自己動手寫,把自己適配到XMPP的網絡中去。可前提是用多少其它客戶端用戶對你的系統感興趣,並且在他們的客戶端中安裝你的應用的插件。

所以從這個角度來說,不如直接選擇XMPP,因爲大多數IM客戶端不在乎與傳統電信網絡的融合,像SKype那樣提供與PSTN的網絡接入。大多數只是純的Internet應用,直接實現點到點的語音、視頻和數據連接。基於XMPP的實現,通過加入主流的IM插件,可以將主流IM的用戶資源引入到你的IM應用中,藉助網絡社交進行推薦,能更快的吸引新用戶,以及他們的好友加入進來。酒好也怕巷子深,所以得藉助XMPP,把酒傳銷出去。至於大家願不願意通過你的IM客戶端登陸其它主流IM,那就看你設計的功夫了,既要讓用戶接納你,還不要讓他們感覺到拉遠了與他們熟悉的IM間的距離。要共贏。

過去大家總覺得XMPP在點對點的媒體流互通支持上還不行,如果通過帶內傳輸媒體信息的話,通過服務器一級級中繼傳輸,那網路開銷可想而知,這還不包括時間上的延遲。其實很多應用都已經支持了點對點的互通,像Libjingle。SIP也就是通過交換主被叫信息直接進行點對點通信的,XMPP當然也可以,而且考慮到XML的強大的靈活的擴展功能,搞定任何網絡應用都不成問題,所以對於新功能新需求的實現,不成問題,不過最好看看XMPP的新的擴展規範,沒準別人已經實現了,照着規範來,也好實現大家的互連互通。如果爲快速實現功能,當然可以自己定製自己的私有協議,沒準還能寫到RFC裏呢。

本文只是提供IM通信技術選擇的一些思路,從我的理解,如果自己要實現一個新的IM應用,選擇XMPP應該更合適一些。這當然也有自己理解上的誤區,歡迎討論和拍磚。

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章