更新時間:2013-03-30
說明:
最開始這個項目采用的是開源的XMPP協議,及開源的gloox庫。但是一年的時間里,隨着開發的深入,慢慢的開始發現的GLOOX的一些缺點,比如要實現最基礎的用戶注冊用戶登陸功能,不得不實現兩個類,然后在這兩個類里面重載函數來寫實現邏輯。現在我們的實現方式簡化為一個類,將不同的邏輯分隔不同的函數。如果增加業務邏輯只需要擴展這些函數即可,業務邏輯本身的實現變得更加的簡潔和輕量,也更容易理解。下面有兩張圖可以對比
gloox的實現 | XproerIMClient的實現 |
![]() |
![]() |
網絡通迅協議模塊:
在服務器設計方面我們也進行了重大的改進:
首先是可執行文件大小,OpenFire的大小是40MB,XproerIM-Server總大小只有1.5MB,總共節省了26倍。性能卻提高了50倍。因為XproerIM-Server全部采用C++開發,OpenFire采用JAVA開發。XproerIM-Server能夠自已管理每1byte的內存,同時采用內存池即節省內存也不會造成系統頻繁清理內存。
XproerIM-Server與OpenFire相比能夠大量的使用高性能系統IO或者網絡IO,使得性能得到數量級的提高。OpenFire使用的功能都是經過JAVA包裝過的,在調用時會造成大量的性能損失和不必要的系統資源開銷。
其次是跨平台的考慮,我們考慮了跨平台支持的問題,在開發時我們就盡量考慮將代碼寫的和平台無關,這樣XproerIM-Server就可以同時支持Windows和Linux,
第三,我們將數據庫從程序中分離出來,這種設計使得XproerIM-Server能夠很容易和現有用戶數據庫無縫整合。
第四,采用高性能的通迅模型-IOCP(Windows),epoll(Linux),能夠在占用極少的服務器資源前提下將服務器性能發揮到極限。
第五,采用分布式構架設計,服務器負載能力是任何互聯網企業都非常關心的問題。XproerIM-Server支持自由的擴展服務器,將負載壓力分擔到多台服務器中,從而提高整個系統的負載能力,使系統能夠滿足企業的業務發展需求。
主要改進:
1.優化主面板
2.完善登陸流程。
3.完善消息流程。
4.放棄Gloox及OpenFire,完全重新設計服務端。
主界面截圖:
快速搜索好友:
聊天界面: