064_即时通讯软件(ASP.NET)
1.无需注册登录,支付后按照提示操作即可获取该资料.
2.资料以网页介绍的为准,下载后不会有水印.资料仅供学习参考之用.
密 惠 保
3 需求分析
3.1 即时消息的一般需求
1) 一般即时消息格式需求:
①所有实体必须至少使用一种消息格式;
②一般即时消息格式必须定义发信者和即时收件箱的标识;
③一般即时消息格式必须包含一个让接收者可以回消息的地址;
④一般即时消息格式应该包含其他通讯方法和联系地址,例如电话号码,邮件地;
⑤一般即时信息格式必须允许对信息有效负载的编码和鉴别(非ASCII内容);
⑥一般即时信息格式必须反映当前最好的国际化实践;
⑦一般即时信息格式必须反映当前最好的可用性实践;
⑧必须存在方法,在扩展一般即时消息格式的时候,不影响原有的域;
⑨必须提供扩展和注册即时消息格式的模式的机制。
2) 可靠性需求
协议必须存在机制,保证即时消息成功投递或者投递失败的时候,发信者获得足够的信息。
3) 性能需求
①即时消息的传输必须足够的迅速;
②即时消息的内容必须足够丰富;
③即时消息的长度尽量足够的长。
3.2 即时通讯系统需求 【买计算机毕业论文就到www.think58.com】
1) 注册需求
①即时通讯系统允许多个用户注册;
②一个用户可以注册多个ID;
③注册所使用的帐号类型为数字或者字母; think58.com [版权所有:http://think58.com]
④注册新用户时必须填写符合要求的信息。
2) 通讯需求
①用户可以传输文本消息;
②用户的消息可以中转至服务器;
③用户可以从服务器获取中转的好友消息;
3) 好友管理需求
①用户可以查询好友;
②用户可以添加好友;
③用户可以添加多个人为好友,一个用户可以被多个人添加为好友
④用户可以删除好友;
⑤用户可以将好友放在多个组中;
⑤用户的好友一次只能属于一个组。
4) 状态切换需求
①用户可以选择登录状态;
②登录完成后用户可以切换状态(在线,隐身);
③用户可以注销登录。
5) 查看在线好友需求
①用户登录时列出所有在线好友;
②用户可以看到新近登录的好友;
③用户将不在看到临时登出的好友。
4 系统设计
4.1 方案论证
4.1.1 “即时”技术的选择
聊天系统实现的关键在于其实时的特性,包括状态的实时改变,消息的实时收发,状态的实时切换等,而传统的Web应用采用同步交互过程,这种情况下,用户首先向Web服务器发送一个请求,然后Web服务器根据用户请求的内容,执行相应的任务,并向用户返回结果。这是一种不连贯的用户体验,在服务器处理请求时,用户只能等待,此时浏览器显示的页面是空白的,这也就是通常所说的“白屏”现象,应用此种技术肯定实现不了即时通讯所要求的效果。所以就需要寻求一种新的技术来实现本系统所要求的即时的效果,而Ajax恰好弥补了Web应用的这一缺点。
think58.com
与传统的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表示:
[来源:http://www.think58.com]
[版权所有:http://think58.com]
[资料来源:http://www.THINK58.com]
think58.com
[资料来源:http://think58.com]
图4-1 即时通讯系统的一般模型
即时通讯系统模型发信者或者即时收信箱的身份鉴别。
①不同的收信箱有不同的身份鉴别需求。
②不同的旁观者有不同的身份鉴别的需求。
③服务内部可能存在多服务器或者多代理服务器。也就是说一个即时通讯服务的逻辑的连接,内部可能有复杂的重定向和代理结构。代理服务器即时收信箱的身份与其他服务器交换即时消息。
④服务并不需要一个服务器,可以通过发信者和即时收信箱之间的直接通讯实现。
⑤涉及与其他即时通讯服务的情况,可能会有—定的内部机制。
个体还可以通过收件箱用户代理设置交付规则(Delivery Rules)限制即时通讯服务把即时信息交付到即时收信箱。
2) 即时通讯系统服务拓扑模型
现在不少即时通讯系统服务的内部拓扑中采用模式一;也有极其个别系统在即时通讯服务上面采用模式二。
模式一是一种非常成熟的模式,大多数TCP/IP应用系统,例如SMTP服务、DNS服务、WWW服务等都是使用这种模式。模式二,对于模式一是一个技术上的修正,虽然这个修正带来了新的问题,但是其实用性是不可质疑的;WEB-MSN正是实用模式二作为服务模式;
web-msn的服务是由服务器构成的;web-msn中每个实体都由一个寄主服务器管理。个体必须向服务器注册,注册后就有可以控制的发信者和即时收件箱。发信者是独立于即时通讯服务外的实体,而即时收信箱则存在于寄主服务器中。WEB-MSN的通讯系统中只有存在发送者和接收者两类实体。注册后的用户必须在服务器上建立登记表,才能知道其他用户的存在,与其他用户进行交流。 本文来自think58 [资料来源:www.THINK58.com]
内容来自think58 [资料来源:http://www.THINK58.com]
think58.com [资料来源:http://www.THINK58.com]
[资料来源:www.THINK58.com]
图4-2 即时通讯系统服务模型
4.2 数据库设计
4.2.1 数据表设计
设计数据库应该具备数据库的基本知识和数据库设计技术,计算机科学的基础知识和程序设计的方法和技巧及软件工程的原理和方法应用领域的知识。
根据本系统的特点和要求,通过对整个系统运行过程和数据流程分析,得出本系统的实体表:用户信息表:users ;聊天信息数据表:message ;users变化监控表:global_info 。
经过数据库分析与设计得到数据库的逻辑结构。本系统使用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
最后登录时间 logintime datetime 8 null
最后注销时间 logouttime datetime 8 null
最后消息编号 last_msg_id int 4 not null think58.com [资料来源:http://THINK58.com]
表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 datetime 8 not 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 首先对发送者和接收者的用户名进行检查,然后再插入新的聊天记录; copyright think58
4. 最近聊天记录存储过程:GetRecentMsg 的作用是返回最近两个用户之间的聊天记录;
5. 获取最新消息存储过程GetNewMessage 根据数据库message表中的msg_id字段判断哪些是新消息,凡是消息ID大于msg_id字段的均是新消息。
4.3 系统功能分析与设计
本系统的主要任务是提供用户之间实时的交流,方便用户之间相互的沟通。
1. 系统登录。登录模块采用基于标准的MVC架构的开发模式。与一般的登录系统相似,主要是对登录用户的身份进行合法性验证。登录状态分为两种:在线、隐身。根据自己的需求选择登录方式。
2. 登录状态切换。当用户登录后还可以重新选择登录状态,通过选择下拉列表的选项可以切换用户的登录状态是在线或者隐身。或者单击“注销”按钮,将注销用户的登录。
3. 用户列表查看。当用户登录成功后,系统将显示给用户他的所有在线好友,并且实时的更新用户列表:当有好友登录后将即时的显示在用户列表中;当有好友临时退出系统后将在用户列表中消失。
4. 消息提示。我们设计了一个类似于MSN提示框的小窗口,定时的检查是否有新消息,如果有的话弹出这个窗口,用户可以即时回复消息。
5. 查看近期消息。当加载消息发送页面的时候,会首先加载若干条近期的聊天记录,帮助用户回顾以往的聊天内容。 本文来自think58 [来源:http://think58.com]
6. 发送消息。用户选择发送对象后,直接进行发送。
7. 接收消息。在消息发送后接收者能够实时接收消息。
根据需求分析和功能说明,开始系统的图形化建模,本系统的功能说明图4-3所示: [来源:http://think58.com]
内容来自think58 [资料来源:THINK58.com]
think58好,好think58
图4-3 系统功能说明图 think58好,好think58 [来源:http://www.think58.com]
①web-msn即时通讯系统执行者
a) Client:web-msn登录端,使用web-msn进行即时通讯的人
b) Server:web-msn服务端,对用户进行注册、登录、资料管理的角色
c) DBServer:web-msn数据库服务器,保存用户数据的角色
d) MsgSender:端对端传输消息或这文件时的发送端
e) MsgReceiver:端对端传输消息或者文件时的接受端
其中,MsgSender和MsgReceiver从属于Client
②web-msn即时通讯系统用例说明
a) 注册:使用者通过注册成为web-msn用户;
b) 登录:连接服务器获得服务;
c) 更改状态:更改自己在服务器的状态,状态分为:在线、隐身;
d) 更改资料:更改自己的资料并保存在数据库服务器;
e) 查找好友:从服务器获得好友信息;
f) 传输信息:传送文本信息或者富文本信息给好友;
g) 退出系统:从服务器退出,取消服务;
内容来自think58
4.4 系统模块设计
4.4.1 注册模块
[来源:http://think58.com]
think58好,好think58 [来源:http://think58.com]
[来源:http://www.think58.com]
copyright think58 [版权所有:http://think58.com]
[资料来源:http://THINK58.com]
内容来自think58 [资料来源:http://think58.com]
本文来自think58 [版权所有:http://think58.com]
copyright think58 [来源:http://think58.com]
内容来自think58 [资料来源:www.THINK58.com]
图4-4 注册用例图
注册用例图用例说明:
①填写注册信息
②检查信息格式
③新注册申请
④传输注册数据
⑤生成新帐号
⑥添加新用户命令
⑦在数据库中添加新用户
4.4.2 登录模块
图4-5 登录用例图
①登录用例图用例说明:
a) 输入登录信息
b) 发送登录请求
c) 验证登录信息
d) 传输好友列表
e) 刷新在线用户列表
f) 通知好友上线
g) 改变好友状态
h) 读取用户数据命令
i) 从数据库中读取用户信息
4.4.3 传输信息模块 [资料来源:http://THINK58.com]
copyright think58
think58好,好think58 [资料来源:http://think58.com]
[资料来源:http://THINK58.com]
[来源:http://www.think58.com]
[资料来源:http://think58.com]
本文来自think58
内容来自think58
[资料来源:THINK58.com]
[资料来源:www.THINK58.com]
think58好,好think58 [资料来源:http://think58.com]
本文来自think58 [资料来源:http://THINK58.com]
think58.com [资料来源:http://THINK58.com]
内容来自think58
think58好,好think58
[资料来源:http://THINK58.com]
copyright think58 [版权所有:http://think58.com]
图4-6 传输信息用例图 [来源:http://www.think58.com]
①在线传输信息用例图用例:
a) 选择发送内容
b) 传输信息
c) 显示信息
4.4.4 退出系统模块
think58好,好think58 [资料来源:http://THINK58.com]
内容来自think58 [来源:http://www.think58.com]
think58.com [来源:http://think58.com]
[来源:http://think58.com]copyright think58 [版权所有:http://think58.com]
[来源:http://www.think58.com]
copyright think58
[资料来源:THINK58.com]
图4-7 退出系统用例图
①退出系统用例
a) 退出web-msn
b) 发送退出消息
c) 刷新在线用户列表
d) 通知好友下线
e) 改变好友状态
f) 更改用户状态命令
g) 在数据库中更改用户状态数据
think58好,好think58 [资料来源:www.THINK58.com]