1、第 1 页 基于 B/S方式的即时通讯软件的设计与实现 摘 要 即时通讯 ( Instant Messaging) 是目前 Internet 上最为流行的通讯方式,而各种各样的即时通讯软件也层出不穷;服务提供商也提供了越来越丰富的通讯服务功能。随着互联网的发展,即时通讯的运用将日益广泛,即时通讯软件业方兴未艾。本文首先描述了即时通讯业的发展和现状,然后初步探讨了即时通讯所涉及到的一些技术,最后对现有的技术进行了对比和分析,提出了一些可能的改进方案,并且设计了一个名为 web-msn 的即时通讯系统。 web-msn 是基于 B/S 的模 式的即时通讯系统,通过 IE 等浏览器直接完成客户端的
2、登录 、数据传输,更加便捷了用户之间的通讯和交友;使用最新的 Ajax技术,使其非常快,无需等待页面的刷新,实现了即时通讯的功能。 在系统设计与建模过程中,使用了 UML 和面向对象的分析、设计方法,本系统基于 .NET Framework 1.1,使用 Visual Studio .NET 2003 作为开发工具,将 .NET 中的一些新技术运用到了系统中;在开发过程中用到了时下流行的重构开发方法,优化了系统的设计。 关键词: Web-msn; 即时通讯 ; B/S; Ajax 第 2 页 The Design and Implementation of Instant Message Ba
3、sed on B/S Abstract Instant message is currently the most popular way to communicate on the Internet, by the way various instant message software have been continuously appearing; service provider offers more and more communication services nowadays. As the development of the Internet, instant messa
4、ge will be more widely used than before. This article first describes the development and the current status of the instant message. Then it discusses the technologies of the instant message such as communication protocol, service mode and friend-making mode. It makes a comparison and analysis with
5、respect to the current technology and also provides some possible solutions for improvement. At last it designs and develops an instant message system named web-msn. The web-msn system is an instant message system which bases on b/s mode. You can login and interact with it through IE. It makes commu
6、nication and finding friends more conveniently. It is designed using Ajax, which doesnt need to wait for refreshing page, so carry out communication instantly. This system is based on .NET Framework 1.1 and uses Visual Studio .NET 2003 as the development tool. It accumulated some new technology in .
7、NET into our system. During the process of development, it used the popular reconstruction development method, which optimizes the system design. Key words: Web-msn; Instant Message; B/S; Ajax 第 3 页 1 引言 即时通讯软件,几乎是每一个上网用户都必备的联络工具。即时通讯软件除了能够让您迅速地在网上找到自己的朋友和工 作伙伴,还可以实时交谈和传递信息,而且,现在不少即时通讯软件还集成了文件共享、语音聊
8、天、网络会议等功能。截止到目前,全球约有近 3 亿多人使用即时通讯软件进行交流,正因为即时通讯软件拥有数以亿计的用户和迅速增长的市场,所以各个公司都盯上了中国这个潜在的最大市场,一时间,即时通讯市场硝烟四起。除了腾讯 QQ和国外的几款著名即时通讯软件纷纷推出新版本,网易也推出了一种新的即时通讯软件 网易泡泡。朗玛公司也推出了名为 UC的通讯工具。 即时通讯软件最早发布于 1996年 11月 15日,以色列特拉维文的 Mirabilis Ltd.发表了一个题为 E.T SURF HOME:MIRABILIS LTD. PROVIDES NEW SOLUTIONS FOR PEER-TO-PEER
9、 INTERNET COMMUNICATIONS 的新闻稿,同时发布了他们新产品 ICQ(I Seek You)的 Beta 测试版。这天标志着 Internet 上的第一个成热的即时通讯系统( Instant Message System)的诞生。即时通讯服务在诞生之后的几年时间得到了迅猛发展,成为新增 Internet 用户的 3个主要应用之一 (WEB,电子邮件和即 时通讯 )。 在国内, 1999 年 2 月,深圳腾讯公司正式发布 OICQ99 beta build 0210,开通腾讯即时通讯服务。 2000 年 5 月,腾讯 QQ 同时在线用户突破 10 万; 2001年 2 月 l
10、0日,腾讯 QQ同时在线用户突破 100 万。 2004 年 4 月份腾讯 QQ 同时在线人数最高记录已经突破了 600 万大关,现在腾讯公司正在把即时通讯系统往移动通讯方向扩展,如今已经将即时通讯与手机短信息 (SMS)成功结合起来。即时通讯软件涉及和影响的领域已近越来越广,其竞争也越来越激烈。国内 QQ最大的敌手朗玛 UC 从 2001 年开始研发, 2002 年的 12 月份 UC 正式发布 ,并且首创了很多技术: UC 是国内第一个做场景聊天的; UC 是第一个把同学录和校友录结合的;第一个把即时通讯与休闲游戏相结合的;第一个把发送动画与即时通讯相结合的。 在一年的发展里, UC 一度
11、达到峰值在线 30 万人,注册用户达到 7000 万。 但是纵观这些即时通讯软件业,都是基于 C/S 模式的,需要下载客户端进行安装,用户名、密码、聊天记录等也是存放在本地机器上,在安全性和方便性上都有所欠缺。设计并开发一个基于 WEB 的即时通讯平台,对于现阶段的学习和研究,都是极为有意义的,基于这个前提和起因 ,我选择了 基于 B/S 方式的即时通讯软件的设计与实现 作为我的毕业设计。 第 4 页 2 系统分析 2.1 课题目的 设计一个基于 B/S 模式的 IM软件,可以通过 IE 等浏览器直接完成客户端的 登录 、数据传输、好友信息分组管理、状态更新、两人以及多人的文字聊天等功能。 2
12、.2 课题意义 作为计算机专业的学生,即时了解和掌握流行的即时通讯机制并且应用到实践过程中,将极大的提高自己的设计和开发软件的积极性;提升自己的理论和技术水平,跟踪国内外最新的技术和开发模式,为以后类似的开发积累经验;同时,开发出来的作品也可以真正运用到实际当中,方便大家 的沟通和交流。 2.3 应解决的问题 1) 服务系统模型的选择; 2) 实时查看在线好友列表; 3) 向在线好友发送即时消息; 4) 实时接收在线消息并且弹出提示; 5) 状态的即使切换(在线,隐身等)。 2.4 需要实现的功能 1) 实现用户注册、 登录 、退出、更改状态等功能; 2) 实现文本信息发送; 3) 实现搜索好
13、友,添加好友,删除好友技术; 4) 实现 消息 的提示功能; 5) 实现设置好友权限功能。 2.5 开发环境 2.5.1 vs2003 开发环境介绍 Visual Studio 是微软公司出品的一款大型应用软件 , 是一套完整的开发工具集,它主要用于生成 ASP.NET Web 应用程序、 XML Web Services、桌面应用程序和移动应用程序。 Visual Basic、 Visual C+、 Visual C# 和 Visual J# 全都使用相同的集成开发环境( IDE)。利用此 IDE 可以共享工具且有助于创建混合语言解决方案,使程序可以使用不同的语言共同开发。 NET 开发平台
14、由一组用于建立 Web 服务应用程序和 Windows 桌面应用程序的软件组件构成,包括 .NET 框架 (Framework)、 .NET 开发工具和 ASP.NET。 Visual Studio 2003 的集成开发环境中为开发人员提供了大量的 实用工具以提高工作效率。这些工具包括了自动编译、项目创建向导、创建部署工程等。 第 5 页 2.5.2 Sql Server 2000 介绍 SQL Server2000 由一系列相互协作的组件构成,能满足最大的 Web 站点和企业数据处理系统存储和分析数据的需要。 SQLServer 构架各种组件通过何种方式发挥合力,更富成效地管理数据。 SQL
15、 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 是异步 Jav
16、aScript 和 XML( Asynchronous JavaScript and XML)的英文缩写。“ Ajax”这个名词的发明人是 Jesse James Garrett,而大力推广并且使 Ajax 技术炙手可热的是 Google。 Google 发布的 Gmail, Google Suggest等应用最终让人们了解了什么是 Ajax。 Ajax 的核心理念在于使用 XMLHttpRequest 对象发送异步请求,最初为XMLHttpRequest 对象提供浏览器支持的微软公司。早在 1998 年,微软公司开发 Web 版 Outlook 时,就已经以 ActiveX 控件的方式为 X
17、MLHttpRequest 提供了支持。 Ajax 是使用客户端脚本与 Web 服务器交换数据的 Web 应用开发方法。这样, Web 页面不用 打断交互流程进行重新加裁,就可以动态地更新。使用 Ajax,用户可以创建接近本地桌面应用的直接、高可用、更丰富、更动态的 Web 用户界面。 实际上, Ajax 不是一种技术,而是几种技术。每种技术都具有独特之处,合在一起就形成了一个功能强大的新技术。 Ajax 包括: 1) XHTML 和 CSS; 2) 使用文档对象模型进行动态显示和交互; 3) 使用 XML 和 XSLT 进行数据交互和操作; 4) 使用 XMLHttpRequest 进行异步
18、数据接收; 5) 使用 JavaScript 将它们绑定在一起。 第 6 页 3 需求分析 3.1 即时消息的 一般需求 1) 一般即时消息格式需求: 所有实体必须至少使用一种消息格式; 一般即时消息格式必须定义发信者和即时收件箱的标识; 一般即时消息格式必须包含一个让接收者可以回消息的地址; 一般即时消息格式应该包含其他通讯方法和联系地址,例如电话号码,邮件地; 一般即时信息格式必须允许对信息有效负载的编码和鉴别 (非 ASCII 内容 ); 一般即时信息格式必须反映当前最好的国际化实践; 一般即时信息格式必须反映当前最好的可用性实践; 必须存在方法,在扩展一般即时消息格式的时候,不影响原有
19、的域; 必须提供扩展 和注册即时消息格式的模式的机制。 2) 可靠性需求 协议必须存在机制,保证即时消息成功投递或者投递失败的时候,发信者获得足够的信息。 3) 性能需求 即时消息的传输必须足够的迅速; 即时消息的内容必须足够丰富; 即时消息的长度尽量足够的长。 3.2 即时通讯系统需求 1) 注册需求 即时通讯系统允许多个用户注册; 一个用户可以注册多个 ID; 注册所使用的帐号类型为数字或者字母; 注册新用户时必须填写符合要求的信息。 2) 通讯需求 用户可以传输文本消息; 用户的消息可以中转至服务器; 用户可以从服务器获取中转的 好友消息; 3) 好友管理需求 用户可以查询好友; 用户可
20、以添加好友; 第 7 页 用户可以添加多个人为好友,一个用户可以被多个人添加为好友 用户可以删除好友; 用户可以将好友放在多个组中; 用户的好友一次只能属于一个组。 4) 状态切换需求 用户可以选择登录状态; 登录完成后用户可以切换状态(在线,隐身); 用户可以注销登录。 5) 查看在线好友需求 用户登录时列出所有在线好友; 用户可以 看到 新近登录的好友; 用户将 不在看到 临时登出的好友。 4 系统设计 4.1 方案论证 4.1.1 “即时”技术的选择 聊天系统实现的关键在于其实 时的特性,包括状态的实时改变,消息的实时收发,状态的实时切换等,而传统的 Web 应用采用同步交互过程,这种情
21、况下,用户首先向 Web 服务器发送一个请求,然后 Web 服务器根据用户请求的内容,执行相应的任务,并向用户返回结果。这是一种不连贯的用户体验,在服务器处理请求时,用户只能等待,此时浏览器显示的页面是空白的,这也就是通常所说的“白屏”现象,应用此种技术肯定实现不了即时通讯所要求的效果。所以就需要寻求一种新的技术来实现本系统所要求的即时的效果,而 Ajax 恰好弥补了 Web 应用的这一缺点。 与传统的 Web 应用不同, Ajax 采用了异步交互的方式。它在用户和服务器之间引入了一个中间媒介,从而改变了同步交互过程中的“处理 -等待 -处理 -等待”模式。用户的浏览器在执行任务时即装载了 A
22、jax 引擎。该引擎是用JavaScript 语言编写的,通常位于一个隐藏的框架中,负责转发用户界面和服务器之间的交互。 Ajax引擎允许用户和应用系统之间的交互以异步的方式进行,独立于用户与 Web 服务器之间的交互。现在,可以通过 Ajax 引擎向 Web 服务器发送请求。所以本系统决定采用 Ajax 来实现即时通讯各个部分“即时”效果的实现。 使用 Ajax 可以带来 的好处有以下几个方面: 1减轻服务器的负担。 Ajax 的原则是“按需取数据”,可以最大程度地减少冗余请求,减轻服务器的负担。 第 8 页 2无需刷新页面,减少用户心理和实际的等待时间。特别是在读取大量数据时,不会像刷新页
23、面那样出现白屏的情况, Ajax 使用 XMLHttpRequest 对象发送请求并且得到服务器响应,在不重新载入整个页面的情况下,用 JavaScript操作 DOM 更新页面。因此在读取数据的过程中,用户所面对的不是白屏,是原来的页面内容,只有在数据接收完毕后才更新相应部分的内容。这种更新是瞬间的,用户几乎感觉 不到。 3带来更好的用户体验。 4可以把以前一些服务器负担的工作转嫁到客户端,利用客户端闲置的能力来处理,减轻服务器负担,充分利用宽带资源,节约空间和宽带租用成本。 5可以调用外部数据。 6基于标准化的并广泛支持的技术,不需要下载插件或者小程序。 7 进一步促进页面呈现与数据的分离
24、。 4.1.2 web-msn 的 模型选择 1) 即时通讯系统的一般模型 即时通讯服务有两个实体:发送者和即时收信箱。即时通讯协议定义了即时通讯服务、发信者和即时收信箱之间的交互作用。即时通讯服务与其他邮件服务不同之处在于,即时消息本身足够 的小,便于快速交付到即时收件箱。个体,用户代理,即时通讯系统的模型 如 图 4-1 表示: 图 4-1 即时通讯系统的一般模型 即时通讯系统模型发信者或者即时收信箱的身份鉴别。 不同的收信箱有不同的身份鉴别需求。 不同的旁观者有不同的身份鉴别的需求。 服务内部可能存在多服务器或者多代理服务器。也就是说一个即时通讯服务的逻辑的连接,内部可能有复杂的重定向和
25、代理结构。代理服务器即时收信箱的身份与其他服务器交换即时消息。 第 9 页 服务并不需要一个服务器,可以通过发信者和即时收信箱之间的直接通讯实现。 涉及与其他即时通讯服务的情况,可能会有 定的内部机制。 个体还可以通过收件箱用户代理设置交付规则( Delivery Rules)限制即时通讯服务把即时信息交付到即时收信箱。 2) 即时通讯系统服务拓扑模型 现在不少即时通讯系统服务的内部拓扑中采用模式一;也有极其个别系统在即时通讯服务上面采用模式二。 模式一是一种非常成熟的模式,大多数 TCP/IP 应用系统,例如 SMTP 服务、DNS 服务、 WWW 服务等都是使用这种模式。模式二,对于模式一
26、是一个技术上的修正,虽然这个修正带来了新的问题,但是其实用性是不可质疑的; WEB-MSN正是实用模式二作为服务模式; web-msn 的服务是由服务器构成的; web-msn 中每个实体都由一个寄主服务器管理。个体必须向服务器注册,注册后就有可以控制的发信者和即时收件箱。发信者是独立于即时通讯服务外的实体,而即时收信箱则存在于寄主服务器中。WEB-MSN 的通讯系统中只有存在发送者和接收者两类实体。注册后的用户必须在服务器上建立登记表,才能知道其他用户的存在,与其他用户进行交流。 图 4-2 即时通讯系统服务模型 S1 S3 S2 C1 C2 C3 客户端 服务器星型结构 服务器 服务器对等
27、结构 模式一 S1 S3 S2 C1 C2 C3 客户端 服务器星型结构 服务器 服务器对等结构 客户端 客户机对等结构 模式二 C S 服务器 客户端 客户端 客户端连接 客户端 服务器连接 服务器 服务器连接 第 10 页 4.2 数据库 设计 4.2.1 数据表设计 设计数据库应该具备数据库的基本 知识和数据库设计技术,计算机科学的基础知识和程序设计的方法和技巧及软件工程的原理和方法应用领域的知识。 根据本系统的特点和要求,通过对整个系统运行过程和数据流程分析,得出本系统的实体表:用户信息表: users ;聊天信息数据表: message ; users变化监控表: global_in
28、fo 。 经过数据库分析与设计得到数据库的逻辑结构。本系统使用 Microsoft SQL Server 2000 为数据库开发工具;创建名为 msn 数据库根据各种功能的实现以及考虑到将来系统功能上的扩展,设计如下数据项和数据结构: 表 4-1 用户信息数据表: users 中文名称 字段名 字段类型 字段长度 是否允许为空 备注 登录名 username varchar 50 not null 主键 用户昵称 nickname varchar 50 null 密码 password varchar 50 not null 登录状态 status int 4 not null 最后登录时间
29、logintime datetime 8 null 最后注销时间 logouttime datetime 8 null 最后消息编号 last_msg_id int 4 not null 表 4-2 聊天信息数据表: message 中文名称 字段名 字段类型 字段长度 是否允许为空 备注 消息编号 msg_id int 4 not null 主键 发送者用户名 sender varchar 50 not null 接受者用户名 receiver varchar 50 not null 消息内容 content varchar 255 not null 发送时间 sendtime dateti
30、me 8 not null 表 4-3 users 变化监控表: global_info 中文名称 字段名 字段类型 字段长度 是否允许为空 备注 4.2.2 存储过程设计 为了提高执行效率,并且简化数据库访问的复杂程度,本系统设计了相应的存储过程完成基本的数据库相关功能。根据对本系统的分析共创建了 5 个基本的存储过程:用户 登录 存储过程: UserLogin ;用户注销存储过程:UserLogout;发送消息存储过程: SendMessage ;最近聊天记录存储过程 :GetRecentMsg ;获取最新消息存储过程: GetNewMessage。 1 用户 登录 存储过程 UserLogin 实现用户的 登录 功能,如果成功 登录 则