CSDN博客

img greenland

InteliIM 1.0 设计文档 - 全文总结与工作展望(修订)

发表于2004/7/1 1:25:00  1278人阅读

全文总结与工作展望

1.1. 主要成果
经过一段时间的摸索和实践,完成了在.NET 平台下局域网即时通讯软件的初步设计,具有一般局域网即时通讯软件的基本功能,如用户管理,消息管理,联系人管理,P2P文本聊天,文本广播,文件传输以及语音聊天,离线消息存储与转发等。

1.2. 设计中遇到的问题和解决办法

         在工程前期,由于没有使用 XML 对象串行化,对每个消息的每个属性都进行 XML 编码,比较烦琐。在采用 System.Xml.Serialization.XmlSerializer 类对消息的载入和保存采取 XML 对象串行化后,代码变得简洁,明了,只需为消息定义好每个属性后,XmlSerializer 即可自动对该消息的每个属性串行化和反串行化。

          考虑到运行环境的多样性,系统没有使用数据库存储数据,而是直接采用 XML 文件通过 ADO.NET 中的数据集这个桥梁存储数据。而要在需要运用数据库存储数据来提高系统性能的地方时,改由数据库存储也是相当容易的。

          在设计文件传输功能的过程中,首先由于没有考虑到 UDP 数据报的大小限制,而企图采用一次性传输文件数据,而以失败告终。后来想到将文件传输数据切割成大小合适的包并加以编号,然后在接收端组装起来,从而实现文件的传输。

1.3. 值得改进和完善的地方
l 如前所述系统没有采用数据库存储数据,而是直接采用 XML 文件存储,虽然简化了软件部署问题,降低了系统配置要求,但是牺牲了性能。在实际的应用中,应该根据企业的实际软硬件设施,实现不同的数据库存储接口。

l 由于系统目前传输的文本聊天信息在测试过程中没有采用很大的文本数据进行测试,因而传输的相关即时消息没有达到 UDP 数据报大小的上限,因而没有出现问题。但是可以看到在传输稍微大一点的数据,如在传输私有聊天中的内嵌在文本中的图片时就遇到了问题,系统提示发生了所传输的数据超过 UDP 数据报大小的限制。因而在实际的系统中应该在发送方根据所发送的即时消息的大小进行适当的分组和编号,并在接收方按照编号顺序将相关的即时消息片段重新组合。

l 在设计诸如文件传输等需要大数据量传输的功能时,由于开始不论是什么即时消息,客户端均通过服务器中转方式与另一客户端通讯;一方面增加了服务器的负载,降低了服务器的性能;另一方面,大数据量特别是要求实时传输的功能实现起来就捉襟见肘了。后来,针对该问题,改进了底层的通讯方式,在线的两个客户端之间的消息直接传输,而不通过服务器中转,这样对于那些诸如文件传输,语音聊天等大数据量性能就明显好转了。

致 谢

参考文献

[1] Simon Robinson K.Scott Allen等著,C#高级编程,清华大学出版社,2002

[2] Stanley B.Lippman 著,C# Primer中文版,华中科技大学出版社,2003

[3] Robert Powell Richard Weeks 著,C#和.NET架构, 人民邮电出版社,2002

[4] Charles Petzold 著, Microsoft C# Windows程序设计(上下册),北京大学出版社,2002

[5] Tom Archer 著,C#技术内幕,清华大学出版社,2002

[6] 钱昆 著,C#实用编程技术,水利水电出版社,2001

[7] Andrew Krowczyk Vinod Kumar等著,.NET网络高级编程,清华大学出版社,2003

[8] http://www.codeproject.com

[9] http://www.sourceforge.net

[10] http://www.csdn.net

[11] http://www.myim.com

[12] http://www.imu.com

[13] http://www.qq.com

[14] http://www.msn.com

[15] http://www.aol.com

0 0

相关博文

我的热门文章

img
取 消
img