基于BS方式的即时通讯软件的设计与实现论文.docx
《基于BS方式的即时通讯软件的设计与实现论文.docx》由会员分享,可在线阅读,更多相关《基于BS方式的即时通讯软件的设计与实现论文.docx(29页珍藏版)》请在冰豆网上搜索。
基于BS方式的即时通讯软件的设计与实现论文
基于B/S方式的即时通讯软件的设计与实现
摘要
即时通讯(InstantMessaging)是目前Internet上最为流行的通讯方式,而各种各样的即时通讯软件也层出不穷;服务提供商也提供了越来越丰富的通讯服务功能。
随着互联网的发展,即时通讯的运用将日益广泛,即时通讯软件业方兴未艾。
本文首先描述了即时通讯业的发展和现状,然后初步探讨了即时通讯所涉及到的一些技术,最后对现有的技术进行了对比和分析,提出了一些可能的改进方案,并且设计了一个名为web-msn的即时通讯系统。
web-msn是基于B/S的模式的即时通讯系统,通过IE等浏览器直接完成客户端的登录、数据传输,更加便捷了用户之间的通讯和交友;使用最新的Ajax技术,使其非常快,无需等待页面的刷新,实现了即时通讯的功能。
在系统设计与建模过程中,使用了UML和面向对象的分析、设计方法,本系统基于.NETFramework1.1,使用VisualStudio.NET2003作为开发工具,将.NET中的一些新技术运用到了系统中;在开发过程中用到了时下流行的重构开发方法,优化了系统的设计。
关键词:
Web-msn;即时通讯;B/S;Ajax
TheDesignandImplementationofInstantMessageBasedonB/S
Abstract
InstantmessageiscurrentlythemostpopularwaytocommunicateontheInternet,bythewayvariousinstantmessagesoftwarehavebeencontinuouslyappearing;serviceprovideroffersmoreandmorecommunicationservicesnowadays.AsthedevelopmentoftheInternet,instantmessagewillbemorewidelyusedthanbefore.Thisarticlefirstdescribesthedevelopmentandthecurrentstatusoftheinstantmessage.Thenitdiscussesthetechnologiesoftheinstantmessagesuchascommunicationprotocol,servicemodeandfriend-makingmode.Itmakesacomparisonandanalysiswithrespecttothecurrenttechnologyandalsoprovidessomepossiblesolutionsforimprovement.Atlastitdesignsanddevelopsaninstantmessagesystemnamedweb-msn.
Theweb-msnsystemisaninstantmessagesystemwhichbasesonb/smode.YoucanloginandinteractwithitthroughIE.Itmakescommunicationandfindingfriendsmoreconveniently.ItisdesignedusingAjax,whichdoesn’tneedtowaitforrefreshingpage,socarryoutcommunicationinstantly.
Thissystemisbasedon.NETFramework1.1andusesVisualStudio.NET2003asthedevelopmenttool.Itaccumulatedsomenewtechnologyin.NETintooursystem.Duringtheprocessofdevelopment,itusedthepopularreconstructiondevelopmentmethod,whichoptimizesthesystemdesign.
Keywords:
Web-msn;InstantMessage;B/S;Ajax
目录
论文总页数:
24页
1引言1
2系统分析2
2.1课题目的2
2.2课题意义2
2.3应解决的问题2
2.4需要实现的功能2
2.5开发环境2
2.5.1vs2003开发环境介绍2
2.5.2SqlServer2000介绍3
2.5.3C#语言介绍3
2.6关键技术-Ajax简介3
3需求分析3
3.1即时消息的一般需求3
3.2即时通讯系统需求4
4系统设计5
4.1方案论证5
4.1.1“即时”技术的选择5
4.1.2web-msn的模型选择6
4.2数据库设计8
4.2.1数据表设计8
4.2.2存储过程设计8
4.3系统功能分析与设计9
4.4系统模块设计11
4.4.1注册模块11
4.4.2登录模块11
4.4.3传输信息模块12
4.4.4退出系统模块13
5系统实现14
5.1发送消息功能实现14
5.2接收消息功能实现15
6测试17
6.1测试内容17
6.2测试结果17
结论18
参考文献19
附录20
致谢23
声明24
1引言
即时通讯软件,几乎是每一个上网用户都必备的联络工具。
即时通讯软件除了能够让您迅速地在网上找到自己的朋友和工作伙伴,还可以实时交谈和传递信息,而且,现在不少即时通讯软件还集成了文件共享、语音聊天、网络会议等功能。
截止到目前,全球约有近3亿多人使用即时通讯软件进行交流,正因为即时通讯软件拥有数以亿计的用户和迅速增长的市场,所以各个公司都盯上了中国这个潜在的最大市场,一时间,即时通讯市场硝烟四起。
除了腾讯QQ和国外的几款著名即时通讯软件纷纷推出新版本,网易也推出了一种新的即时通讯软件——网易泡泡。
朗玛公司也推出了名为UC的通讯工具。
即时通讯软件最早发布于1996年11月15日,以色列特拉维文的MirabilisLtd.发表了一个题为《E.TSURFHOME:
MIRABILISLTD.PROVIDESNEWSOLUTIONSFORPEER-TO-PEERINTERNETCOMMUNICATIONS》的新闻稿,同时发布了他们新产品ICQ(ISeekYou)的Beta测试版。
这天标志着Internet上的第一个成热的即时通讯系统(InstantMessageSystem)的诞生。
即时通讯服务在诞生之后的几年时间得到了迅猛发展,成为新增Internet用户的3个主要应用之一(WEB,电子邮件和即时通讯)。
在国内,1999年2月,深圳腾讯公司正式发布OICQ99betabuild0210,开通腾讯即时通讯服务。
2000年5月,腾讯QQ同时在线用户突破10万;2001年2月l0日,腾讯QQ同时在线用户突破100万。
2004年4月份腾讯QQ同时在线人数最高记录已经突破了600万大关,现在腾讯公司正在把即时通讯系统往移动通讯方向扩展,如今已经将即时通讯与手机短信息(SMS)成功结合起来。
即时通讯软件涉及和影响的领域已近越来越广,其竞争也越来越激烈。
国内QQ最大的敌手朗玛UC从2001年开始研发,2002年的12月份UC正式发布,并且首创了很多技术:
UC是国内第一个做场景聊天的;UC是第一个把同学录和校友录结合的;第一个把即时通讯与休闲游戏相结合的;第一个把发送动画与即时通讯相结合的。
在一年的发展里,UC一度达到峰值在线30万人,注册用户达到7000万。
但是纵观这些即时通讯软件业,都是基于C/S模式的,需要下载客户端进行安装,用户名、密码、聊天记录等也是存放在本地机器上,在安全性和方便性上都有所欠缺。
设计并开发一个基于WEB的即时通讯平台,对于现阶段的学习和研究,都是极为有意义的,基于这个前提和起因,我选择了基于B/S方式的即时通讯软件的设计与实现作为我的毕业设计。
2系统分析
2.1课题目的
设计一个基于B/S模式的IM软件,可以通过IE等浏览器直接完成客户端的登录、数据传输、好友信息分组管理、状态更新、两人以及多人的文字聊天等功能。
2.2课题意义
作为计算机专业的学生,即时了解和掌握流行的即时通讯机制并且应用到实践过程中,将极大的提高自己的设计和开发软件的积极性;提升自己的理论和技术水平,跟踪国内外最新的技术和开发模式,为以后类似的开发积累经验;同时,开发出来的作品也可以真正运用到实际当中,方便大家的沟通和交流。
2.3应解决的问题
1)服务系统模型的选择;
2)实时查看在线好友列表;
3)向在线好友发送即时消息;
4)实时接收在线消息并且弹出提示;
5)状态的即使切换(在线,隐身等)。
2.4需要实现的功能
1)实现用户注册、登录、退出、更改状态等功能;
2)实现文本信息发送;
3)实现搜索好友,添加好友,删除好友技术;
4)实现消息的提示功能;
5)实现设置好友权限功能。
2.5开发环境
2.5.1vs2003开发环境介绍
VisualStudio是微软公司出品的一款大型应用软件,是一套完整的开发工具集,它主要用于生成ASP.NETWeb应用程序、XMLWebServices、桌面应用程序和移动应用程序。
VisualBasic、VisualC++、VisualC#和VisualJ#全都使用相同的集成开发环境(IDE)。
利用此IDE可以共享工具且有助于创建混合语言解决方案,使程序可以使用不同的语言共同开发。
NET开发平台由一组用于建立Web服务应用程序和Windows桌面应用程序的软件组件构成,包括.NET框架(Framework)、.NET开发工具和ASP.NET。
VisualStudio2003的集成开发环境中为开发人员提供了大量的实用工具以提高工作效率。
这些工具包括了自动编译、项目创建向导、创建部署工程等。
2.5.2SqlServer2000介绍
SQLServer2000由一系列相互协作的组件构成,能满足最大的Web站点和企业数据处理系统存储和分析数据的需要。
SQLServer构架各种组件通过何种方式发挥合力,更富成效地管理数据。
SQLServer2000数据库引擎提供完整的XML支持。
它还具有构成最大的Web站点的数据存储组件所需的可伸缩性、可用性和安全功能。
SQLServer2000程序设计模型与WindowsDNA构架集成,用以开发Web应用程序,并且SQLServer2000支持EnglishQuery和Microsoft搜索服务等功能,在Web应用程序中包含了用户友好的查询和强大的搜索功能。
2.5.3C#语言介绍
C#是一种语言,它是专门为了微软的.NET战略而设计的一种语言.C#也叫C#.Net。
2.6关键技术-Ajax简介
Ajax是异步JavaScript和XML(AsynchronousJavaScriptandXML)的英文缩写。
“Ajax”这个名词的发明人是JesseJamesGarrett,而大力推广并且使Ajax技术炙手可热的是Google。
Google发布的Gmail,GoogleSuggest等应用最终让人们了解了什么是Ajax。
Ajax的核心理念在于使用XMLHttpRequest对象发送异步请求,最初为XMLHttpRequest对象提供浏览器支持的微软公司。
早在1998年,微软公司开发Web版Outlook时,就已经以ActiveX控件的方式为XMLHttpRequest提供了支持。
Ajax是使用客户端脚本与Web服务器交换数据的Web应用开发方法。
这样,Web页面不用打断交互流程进行重新加裁,就可以动态地更新。
使用Ajax,用户可以创建接近本地桌面应用的直接、高可用、更丰富、更动态的Web用户界面。
实际上,Ajax不是一种技术,而是几种技术。
每种技术都具有独特之处,合在一起就形成了一个功能强大的新技术。
Ajax包括:
1)XHTML和CSS;
2)使用文档对象模型进行动态显示和交互;
3)使用XML和XSLT进行数据交互和操作;
4)使用XMLHttpRequest进行异步数据接收;
5)使用JavaScript将它们绑定在一起。
3需求分析
3.1即时消息的一般需求
1)一般即时消息格式需求:
①所有实体必须至少使用一种消息格式;
②一般即时消息格式必须定义发信者和即时收件箱的标识;
③一般即时消息格式必须包含一个让接收者可以回消息的地址;
④一般即时消息格式应该包含其他通讯方法和联系地址,例如电话号码,邮件地;
⑤一般即时信息格式必须允许对信息有效负载的编码和鉴别(非ASCII内容);
⑥一般即时信息格式必须反映当前最好的国际化实践;
⑦一般即时信息格式必须反映当前最好的可用性实践;
⑧必须存在方法,在扩展一般即时消息格式的时候,不影响原有的域;
⑨必须提供扩展和注册即时消息格式的模式的机制。
2)可靠性需求
协议必须存在机制,保证即时消息成功投递或者投递失败的时候,发信者获得足够的信息。
3)性能需求
①即时消息的传输必须足够的迅速;
②即时消息的内容必须足够丰富;
③即时消息的长度尽量足够的长。
3.2即时通讯系统需求
1)注册需求
①即时通讯系统允许多个用户注册;
②一个用户可以注册多个ID;
③注册所使用的帐号类型为数字或者字母;
④注册新用户时必须填写符合要求的信息。
2)通讯需求
①用户可以传输文本消息;
②用户的消息可以中转至服务器;
③用户可以从服务器获取中转的好友消息;
3)好友管理需求
①用户可以查询好友;
②用户可以添加好友;
③用户可以添加多个人为好友,一个用户可以被多个人添加为好友
④用户可以删除好友;
⑤用户可以将好友放在多个组中;
⑤用户的好友一次只能属于一个组。
4)状态切换需求
①用户可以选择登录状态;
②登录完成后用户可以切换状态(在线,隐身);
③用户可以注销登录。
5)查看在线好友需求
①用户登录时列出所有在线好友;
②用户可以看到新近登录的好友;
③用户将不在看到临时登出的好友。
4系统设计
4.1方案论证
4..1“即时”技术的选择
聊天系统实现的关键在于其实时的特性,包括状态的实时改变,消息的实时收发,状态的实时切换等,而传统的Web应用采用同步交互过程,这种情况下,用户首先向Web服务器发送一个请求,然后Web服务器根据用户请求的内容,执行相应的任务,并向用户返回结果。
这是一种不连贯的用户体验,在服务器处理请求时,用户只能等待,此时浏览器显示的页面是空白的,这也就是通常所说的“白屏”现象,应用此种技术肯定实现不了即时通讯所要求的效果。
所以就需要寻求一种新的技术来实现本系统所要求的即时的效果,而Ajax恰好弥补了Web应用的这一缺点。
与传统的Web应用不同,Ajax采用了异步交互的方式。
它在用户和服务器之间引入了一个中间媒介,从而改变了同步交互过程中的“处理-等待-处理-等待”模式。
用户的浏览器在执行任务时即装载了Ajax引擎。
该引擎是用JavaScript语言编写的,通常位于一个隐藏的框架中,负责转发用户界面和服务器之间的交互。
Ajax引擎允许用户和应用系统之间的交互以异步的方式进行,独立于用户与Web服务器之间的交互。
现在,可以通过Ajax引擎向Web服务器发送请求。
所以本系统决定采用Ajax来实现即时通讯各个部分“即时”效果的实现。
使用Ajax可以带来的好处有以下几个方面:
1.减轻服务器的负担。
Ajax的原则是“按需取数据”,可以最大程度地减少冗余请求,减轻服务器的负担。
2.无需刷新页面,减少用户心理和实际的等待时间。
特别是在读取大量数据时,不会像刷新页面那样出现白屏的情况,Ajax使用XMLHttpRequest对象发送请求并且得到服务器响应,在不重新载入整个页面的情况下,用JavaScript操作DOM更新页面。
因此在读取数据的过程中,用户所面对的不是白屏,是原来的页面内容,只有在数据接收完毕后才更新相应部分的内容。
这种更新是瞬间的,用户几乎感觉不到。
3.带来更好的用户体验。
4.可以把以前一些服务器负担的工作转嫁到客户端,利用客户端闲置的能力来处理,减轻服务器负担,充分利用宽带资源,节约空间和宽带租用成本。
5.可以调用外部数据。
6.基于标准化的并广泛支持的技术,不需要下载插件或者小程序。
7.进一步促进页面呈现与数据的分离。
4..2web-msn的模型选择
1)即时通讯系统的一般模型
即时通讯服务有两个实体:
发送者和即时收信箱。
即时通讯协议定义了即时通讯服务、发信者和即时收信箱之间的交互作用。
即时通讯服务与其他邮件服务不同之处在于,即时消息本身足够的小,便于快速交付到即时收件箱。
个体,用户代理,即时通讯系统的模型如图4-1表示:
图4-1即时通讯系统的一般模型
即时通讯系统模型发信者或者即时收信箱的身份鉴别。
①不同的收信箱有不同的身份鉴别需求。
②不同的旁观者有不同的身份鉴别的需求。
③服务内部可能存在多服务器或者多代理服务器。
也就是说一个即时通讯服务的逻辑的连接,内部可能有复杂的重定向和代理结构。
代理服务器即时收信箱的身份与其他服务器交换即时消息。
④服务并不需要一个服务器,可以通过发信者和即时收信箱之间的直接通讯实现。
⑤涉及与其他即时通讯服务的情况,可能会有—定的内部机制。
个体还可以通过收件箱用户代理设置交付规则(DeliveryRules)限制即时通讯服务把即时信息交付到即时收信箱。
2)即时通讯系统服务拓扑模型
现在不少即时通讯系统服务的内部拓扑中采用模式一;也有极其个别系统在即时通讯服务上面采用模式二。
模式一是一种非常成熟的模式,大多数TCP/IP应用系统,例如SMTP服务、DNS服务、WWW服务等都是使用这种模式。
模式二,对于模式一是一个技术上的修正,虽然这个修正带来了新的问题,但是其实用性是不可质疑的;WEB-MSN正是实用模式二作为服务模式;
web-msn的服务是由服务器构成的;web-msn中每个实体都由一个寄主服务器管理。
个体必须向服务器注册,注册后就有可以控制的发信者和即时收件箱。
发信者是独立于即时通讯服务外的实体,而即时收信箱则存在于寄主服务器中。
WEB-MSN的通讯系统中只有存在发送者和接收者两类实体。
注册后的用户必须在服务器上建立登记表,才能知道其他用户的存在,与其他用户进行交流。
图4-2即时通讯系统服务模型
4.2数据库设计
4.2.1数据表设计
设计数据库应该具备数据库的基本知识和数据库设计技术,计算机科学的基础知识和程序设计的方法和技巧及软件工程的原理和方法应用领域的知识。
根据本系统的特点和要求,通过对整个系统运行过程和数据流程分析,得出本系统的实体表:
用户信息表:
users;聊天信息数据表:
message;users变化监控表:
global_info。
经过数据库分析与设计得到数据库的逻辑结构。
本系统使用MicrosoftSQLServer2000为数据库开发工具;创建名为msn数据库根据各种功能的实现以及考虑到将来系统功能上的扩展,设计如下数据项和数据结构:
表4-1用户信息数据表:
users
中文名称
字段名
字段类型
字段长度
是否允许为空
备注
登录名
username
varchar
50
notnull
主键
用户昵称
nickname
varchar
50
null
密码
password
varchar
50
notnull
登录状态
status
int
4
notnull
最后登录时间
logintime
datetime
8
null
最后注销时间
logouttime
datetime
8
null
最后消息编号
last_msg_id
int
4
notnull
表4-2聊天信息数据表:
message
中文名称
字段名
字段类型
字段长度
是否允许为空
备注
消息编号
msg_id
int
4
notnull
主键
发送者用户名
sender
varchar
50
notnull
接受者用户名
receiver
varchar
50
notnull
消息内容
content
varchar
255
notnull
发送时间
sendtime
datetime
8
notnull
表4-3users变化监控表:
global_info
中文名称
字段名
字段类型
字段长度
是否允许为空
备注
4.2.2存储过程设计
为了提高执行效率,并且简化数据库访问的复杂程度,本系统设计了相应的存储过程完成基本的数据库相关功能。
根据对本系统的分析共创建了5个基本的存储过程:
用户登录存储过程:
UserLogin;用户注销存储过程:
UserLogout;发送消息存储过程:
SendMessage;最近聊天记录存储过程:
GetRecentMsg;获取最新消息存储过程:
GetNewMessage。
1.用户登录存储过程UserLogin实现用户的登录功能,如果成功登录则返回0,反之则返回1;
2.用户注销存储过程UserLogout实现用户的登出功能,如果成功登出则返回0,反之则返回1;
3.发送消息存储过程SendMessage首先对发送者和接收者的用户名进行检查,然后再插入新的聊天记录;
4.最近聊天记录存储过程:
GetRecentMsg的作用是返回最近两个用户之间的聊天记录;
5.获取最新消息存储过程GetNewMessage根据数据库message表中的msg_id字段判断哪些是新消息,凡是消息ID大于msg_id字段的均是新消息。
4.3系统功能分析与设计
本系统的主要任务是提供用户之间实时的交流,方便用户之间相互的沟通。
1.系统登录。
登录模块采用基于标准的MVC架构的开发模式。
与一般的登录系统相似,主要是对登录用户的身份进行合法性验证。
登录状态分为两种:
在线、隐身。
根据自己的需求选择登录方式。
2.登录状态切换。
当用户登录后还可以重新选择登录状态,通过选择下拉列表的选项可以切换用户的登录状态是在线或者隐身。
或者单击“注销”按钮,将注销用户的登录。
3.用户列表查看。
当用户登录成功后,系统将显示给用户他的所有在线好友,并且实时的更新用户列表:
当有好友登录后将即时的显示在用户列表中;当有好友临时退出系统后将在用户列表中消失。
4.消息提示。
我们