基于BS方式的即时通讯软件的设计与实现 精品.doc_第1页
基于BS方式的即时通讯软件的设计与实现 精品.doc_第2页
基于BS方式的即时通讯软件的设计与实现 精品.doc_第3页
基于BS方式的即时通讯软件的设计与实现 精品.doc_第4页
基于BS方式的即时通讯软件的设计与实现 精品.doc_第5页
已阅读5页,还剩15页未读 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

基于B/S方式的即时通讯软件的设计与实现1 引言即时通讯软件,几乎是每一个上网用户都必备的联络工具。即时通讯软件除了能够让您迅速地在网上找到自己的朋友和工作伙伴,还可以实时交谈和传递信息,而且,现在不少即时通讯软件还集成了文件共享、语音聊天、网络会议等功能。截止到目前,全球约有近3亿多人使用即时通讯软件进行交流,正因为即时通讯软件拥有数以亿计的用户和迅速增长的市场,所以各个公司都盯上了中国这个潜在的最大市场,一时间,即时通讯市场硝烟四起。除了腾讯QQ和国外的几款著名即时通讯软件纷纷推出新版本,网易也推出了一种新的即时通讯软件网易泡泡。朗玛公司也推出了名为UC的通讯工具。即时通讯软件最早发布于1996年11月15日,以色列特拉维文的Mirabilis Ltd.发表了一个题为E.T SURF HOME:MIRABILIS LTD. PROVIDES NEW SOLUTIONS FOR PEER-TO-PEER INTERNET MUNICATIONS的新闻稿,同时发布了他们新产品ICQ(I Seek You)的Beta测试版。这天标志着Internet上的第一个成热的即时通讯系统(Instant Message System)的诞生。即时通讯服务在诞生之后的几年时间得到了迅猛发展,成为新增Internet用户的3个主要应用之一(WEB,电子邮件和即时通讯)。在国内,1999年2月,深圳腾讯公司正式发布OICQ99 beta build 0210,开通腾讯即时通讯服务。2000年5月,腾讯QQ同时在线用户突破10万;20XX年2月l0日,腾讯QQ同时在线用户突破100万。20XX年4月份腾讯QQ同时在线人数最高记录已经突破了600万大关,现在腾讯公司正在把即时通讯系统往移动通讯方向扩展,如今已经将即时通讯与手机短信息(SMS)成功结合起来。即时通讯软件涉及和影响的领域已近越来越广,其竞争也越来越激烈。国内QQ最大的敌手朗玛UC从20XX年开始研发,20XX年的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.1 vs20XX开发环境介绍 Visual Studio是微软公司出品的一款大型应用软件,是一套完整的开发工具集,它主要用于生成ASP.NET Web应用程序、XML Web Services、桌面应用程序和移动应用程序。Visual Basic、Visual C+、Visual C# 和Visual J# 全都使用相同的集成开发环境(IDE)。利用此IDE可以共享工具且有助于创建混合语言解决方案,使程序可以使用不同的语言共同开发。NET开发平台由一组用于建立Web服务应用程序和Windows桌面应用程序的软件组件构成,包括.NET框架(Framework)、.NET开发工具和ASP.NET。Visual Studio 20XX的集成开发环境中为开发人员提供了大量的实用工具以提高工作效率。这些工具包括了自动编译、项目创建向导、创建部署工程等。2.5.2 Sql Server 2000介绍SQL Server2000由一系列相互协作的组件构成,能满足最大的Web站点和企业数据处理系统存储和分析数据的需要。SQLServer构架各种组件通过何种方式发挥合力,更富成效地管理数据。 SQL Server2000数据库引擎提供完整的XML支持。它还具有构成最大的Web站点的数据存储组件所需的可伸缩性、可用性和安全功能。SQL Server2000程序设计模型与WindowsDNA构架集成,用以开发Web应用程序,并且SQL Server2000支持EnglishQuery和 Microsoft搜索服务等功能,在Web应用程序中包含了用户友好的查询和强大的搜索功能。2.5.3 C#语言介绍C#是一种语言,它是专门为了微软的.NET战略而设计的一种语言. C#也叫C#.Net。2.6 关键技术-Ajax简介Ajax 是异步JavaScript和XML(Asynchronous JavaScript and XML)的英文缩写。“Ajax”这个名词的发明人是Jesse James Garrett,而大力推广并且使Ajax技术炙手可热的是Google。Google发布的Gmail,Google Suggest等应用最终让人们了解了什么是Ajax。Ajax的核心理念在于使用XMLHttpRequest对象发送异步请求,最初为XMLHttpRequest对象提供浏览器支持的微软公司。早在1998年,微软公司开发Web版Outlook时,就已经以ActiveX控件的方式为XMLHttpRequest提供了支持。Ajax是使用客户端脚本与Web服务器交换数据的Web应用开发方法。这样,Web页面不用打断交互流程进行重新加裁,就可以动态地更新。使用Ajax,用户可以创建接近本地桌面应用的直接、高可用、更丰富、更动态的Web用户界面。实际上,Ajax不是一种技术,而是几种技术。每种技术都具有独特之处,合在一起就形成了一个功能强大的新技术。Ajax包括:1) X和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.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.1.2 web-msn的模型选择1) 即时通讯系统的一般模型即时通讯服务有两个实体:发送者和即时收信箱。即时通讯协议定义了即时通讯服务、发信者和即时收信箱之间的交互作用。即时通讯服务与其他邮件服务不同之处在于,即时消息本身足够的小,便于快速交付到即时收件箱。个体,用户代理,即时通讯系统的模型如图4-1表示:即时通讯系统模型发信者或者即时收信箱的身份鉴别。不同的收信箱有不同的身份鉴别需求。不同的旁观者有不同的身份鉴别的需求。服务内部可能存在多服务器或者多代理服务器。也就是说一个即时通讯服务的逻辑的连接,内部可能有复杂的重定向和代理结构。代理服务器即时收信箱的身份与其他服务器交换即时消息。服务并不需要一个服务器,可以通过发信者和即时收信箱之间的直接通讯实现。涉及与其他即时通讯服务的情况,可能会有定的内部机制。个体还可以通过收件箱用户代理设置交付规则(Delivery Rules)限制即时通讯服务把即时信息交付到即时收信箱。2) 即时通讯系统服务拓扑模型现在不少即时通讯系统服务的内部拓扑中采用模式一;也有极其个别系统在即时通讯服务上面采用模式二。模式一是一种非常成熟的模式,大多数TCP/IP应用系统,例如SMTP服务、DNS服务、服务等都是使用这种模式。模式二,对于模式一是一个技术上的修正,虽然这个修正带来了新的问题,但是其实用性是不可质疑的;WEB-MSN正是实用模式二作为服务模式;web-msn的服务是由服务器构成的;web-msn中每个实体都由一个寄主服务器管理。个体必须向服务器注册,注册后就有可以控制的发信者和即时收件箱。发信者是独立于即时通讯服务外的实体,而即时收信箱则存在于寄主服务器中。WEB-MSN的通讯系统中只有存在发送者和接收者两类实体。注册后的用户必须在服务器上建立登记表,才能知道其他用户的存在,与其他用户进行交流。S1S3S2C1C2C3客户端服务器星型结构服务器服务器对等结构模式一S1S3S2C1C2C3客户端服务器星型结构服务器服务器对等结构客户端客户机对等结构模式二CS服务器客户端客户端客户端连接客户端服务器连接服务器服务器连接图4-2 即时通讯系统服务模型4.2 数据库设计4.2.1 数据表设计设计数据库应该具备数据库的基本知识和数据库设计技术,计算机科学的基础知识和程序设计的方法和技巧及软件工程的原理和方法应用领域的知识。根据本系统的特点和要求,通过对整个系统运行过程和数据流程分析,得出本系统的实体表:用户信息表:users ;聊天信息数据表:message ;users变化监控表:global_info 。经过数据库分析与设计得到数据库的逻辑结构。本系统使用Microsoft SQL Server 2000为数据库开发工具;创建名为msn数据库根据各种功能的实现以及考虑到将来系统功能上的扩展,设计如下数据项和数据结构:表4-1 用户信息数据表:users中文名称字段名字段类型字段长度是否允许为空备注登录名usernamevarchar50not null主键用户昵称nicknamevarchar50null密码passwordvarchar50not null登录状态statusint4not null最后登录时间logintimedatetime8null最后注销时间logouttimedatetime8null最后消息编号last_msg_idint4not null 表4-2 聊天信息数据表:message中文名称字段名字段类型字段长度是否允许为空备注消息编号msg_idint4not null主键发送者用户名sendervarchar50not null接受者用户名receivervarchar50not null消息内容contentvarchar255not null发送时间sendtimedatetime8not null 表4-3 users变化监控表: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 消息提示。我们设计了一个类似于MSN提示框的小窗口,定时的检查是否有新消息,如果有的话弹出这个窗口,用户可以即时回复消息。5 查看近期消息。当加载消息发送页面的时候,会首先加载若干条近期的聊天记录,帮助用户回顾以往的聊天内容。6 发送消息。用户选择发送对象后,直接进行发送。7 接收消息。在消息发送后接收者能够实时接收消息。 根据需求分析和功能说明,开始系统的图形化建模,本系统的功能说明图4-3所示:商业源代码,全套计算机免费下载 ibaidusoft更多全套设计联系QQ:1042897696最新设计大全 bylw168/sf/20XX0915/3539. web-msn即时通讯系统执行者a) Client:web-msn登录端,使用web-msn进行即时通讯的人b) Server:web-msn服务端,对用户进行注册、登录、资料管理的角色c) DBServer:web-msn数据库服务器,保存用户数据的角色d) MsgSender:端对端传输消息或这文件时的发送端e) MsgReceiver:端对端传输消息或者文件时的接受端其中,MsgSender和MsgReceiver从属于Clientweb-msn即时通讯系统用例说明a) 注册:使用者通过注册成为web-msn用户;b) 登录:连接服务器获得服务;c) 更改状态:更改自己在服务器的状态,状态分为:在线、隐身;d) 更改资料:更改自己的资料并保存在数据库服务器;e) 查找好友:从服务器获得好友信息;f) 传输信息:传送文本信息或者富文本信息给好友;g) 退出系统:从服务器退出,取消服务;4.4 系统模块设计4.4.1 注册模块 图4-4 注册用例图注册用例图用例说明:填写注册信息检查信息格式新注册申请传输注册数据生成新帐号添加新用户命令在数据库中添加新用户4.4.2 登录模块图4-5 登录用例图登录用例图用例说明:a) 输入登录信息b) 发送登录请求c) 验证登录信息d) 传输好友列表e) 刷新在线用户列表f) 通知好友上线g) 改变好友状态h) 读取用户数据命令i) 从数据库中读取用户信息4.4.3 传输信息模块 图4-6 传输信息用例图在线传输信息用例图用例:a) 选择发送内容b) 传输信息c) 显示信息4.4.4 退出系统模块 图4-7 退出系统用例图退出系统用例a) 退出web-msnb) 发送退出消息c) 刷新在线用户列表d) 通知好友下线e) 改变好友状态f) 更改用户状态命令g) 在数据库中更改用户状态数据5 系统实现5.1 发送消息功能实现为了实现发送消息的功能,在服务器端代码中需要定义Ajax方法SendMessage,具体代码如下: AjaxMethod()public void SendMessage(string strUsername, string strContent)/ 数据连接SqlConnection conn = new SqlConnection(ConfigurationSettings.AppSettingsConnStr);/ SQL命令Sqlmand cmd = conn.Createmand();cmdmandText = string.Format(SendMessage 0,1, 2,User.Identity.Name, strUsername, strContent);try/ 打开数据连接conn.Open();/ 执行SQL,发送消息cmd.ExecuteNonQuery();catch (SqlException)finally/ 关闭连接conn.Close();然后在客户端编写getMessage函数,调用服务器Ajax方法进行消息的发送。/ 发送消息function sendMessage()/ 消息内容输入框var ta_content = el(content);/ 如果输入内容不为空if (ta_content.value.length 0)/ 消息显示区域 var div_recentMsg = el(recentMsg);/ 用户名var username = document.location.search.split(=)1;/ 发送消息ch111.SendMsg.SendMessage(username, ta_content.value);/ 清空输入框ta_content.value = ;/ 页面跟随输入框滚动ta_content.scrollIntoView(false);/ 获取新消息getNewMessage();getMessage函数的代码如下:5.2 接收消息功能实现为了实现接收消息的功能,在服务器端代码中需要定义Ajax方法GetNewMessage,具体代码如下:AjaxMethod()public DataSet GetNewMessage()/ 返回的数据集DataSet ds = new DataSet();/ 数据连接SqlConnection conn = new SqlConnection(ConfigurationSettings.AppSettingsConnStr);/ SQL命令Sqlmand cmd = conn.Createmand();/ 数据适配器SqlDataAdapter da = new SqlDataAdapter(cmd);try/ 向DataSet中填充消息数据da.Fill(ds); try/ 向DataSet中填充消息数据da.Fill(ds);catch (SqlException)finally/ 关闭连接conn.Close();return ds;然后在客户端编写getNewMessage函数,调用服务器Ajax方法进行消息的发送。getNewMessage函数的代码如下:function getNewMessage()/ 用户名var username = document.location.search.split(=)1;/ 消息显示区域var div_recentMsg = el(rec

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论