更新时间: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,完全重新设计服务端。
主界面截图:
快速搜索好友:
聊天界面: