状态切换需求
①用户可以选择登录状态;
②登录完成后用户可以切换状态(在线,隐身); ③用户可以注销登录。 查看在线好友需求
①用户登录时列出所有在线好友; ②用户可以看到新近登录的好友; ③用户将不在看到临时登出的好友。
3.4 web-talk的模型选择
即时通讯服务有两个实体:发送者和即时收信箱。即时通讯协议定义了即时通讯服务、发信者和即时收信箱之间的交互作用。即时通讯服务与其他邮件服务不同之处在于,即时消息本身足够的小,便于快速交付到即时收件箱。个体,用户代理,即时通讯系统的模型如图表示:
1.即时通讯系统模型发信者或者即时收信箱的身份鉴别 ①不同的收信箱有不同的身份鉴别需求。 ②不同的旁观者有不同的身份鉴别的需求。
③服务内部可能存在多服务器或者多代理服务器。也就是说一个即时通讯服务的逻辑的连接,内部可能有复杂的重定向和代理结构。代理服务器即时收信箱的身份与其他服务器交换即时消息。
④服务并不需要一个服务器,可以通过发信者和即时收信箱之间的直接通讯实现。
⑤涉及与其他即时通讯服务的情况,可能会有—定的内部机制。 个体还可以通过收件箱用户代理设置交付规则(Delivery Rules)限制即时通讯服务把即时信息交付到即时收信箱。 2.即时通讯系统服务拓扑模型
现在不少即时通讯系统服务的内部拓扑中采用模式一;也有极其个别系统在即时通讯服务上面采用模式二。
模式一是一种非常成熟的模式,大多数TCP/IP应用系统,例如SMTP服务、DNS服务、WWW服务等都是使用这种模式。模式二,对于模式一是一个技术上的
修正,虽然这个修正带来了新的问题,但是其实用性是不可质疑的;WEB-MSN正是实用模式二作为服务模式;
web-talk的服务是由服务器构成的;web-talk中每个实体都由一个寄主服务器管理。个体必须向服务器注册,注册后就有可以控制的发信者和即时收件箱。发信者是独立于即时通讯服务外的实体,而即时收信箱则存在于寄主服务器中。web-talk的通讯系统中只有存在发送者和接收者两类实体。注册后的用户必须在服务器上建立登记表,才能知道其他用户的存在,与其他用户进行交流。
C1 S3 S1 C2 C1 S3 S1 C2 S2 S2 C3 客户端—服务器星型结构 服务器—服务器对等结构
客户端 一 C3 客户端—服务器星型结构 服务器—服务器对等结构 客户端—客户机对等结构
模式二
S 服务器
客户端—服务器连接 服务器—服务器连接
C 客户端-客户连接
第四章 数据库和功能模块设计
4.1数据表设计
设计数据库应该具备数据库的基本知识和数据库设计技术,计算机科学的基础知识和程序设计的方法和技巧及软件工程的原理和方法应用领域的知识。
根据本系统的特点和要求,通过对整个系统运行过程和数据流程分析,得出本系统的实体表:用户信息表:users ;聊天信息数据表:message ;users变化监控表:global_info 。
经过数据库分析与设计得到数据库的逻辑结构。本系统使用Microsoft SQL
Server 2000为数据库开发工具;创建名为msn数据库根据各种功能的实现以及考虑到将来系统功能上的扩展,设计如下数据项和数据结构:
用户信息数据表:users
中文名称 登录名 用户昵称 密码 登录状态 最后登录时间
字段名 username nickname password status logintime
字段类型 字段长度 是否允许为空 备注 varchar varchar varchar int datetime
50 50 50 4 8 8 4
not null null not null not null null null not null
主键
最后注销时间 logouttime datetime 最后消息编号 last_msg_id
int
聊天信息数据表:message
中文名称 消息编号 发送者用户名
字段名 msg_id sender
字段类型 字段长度 是否允许为空 备注 int varchar
4 50 50 255 8
not null not null not null not null not null
主键
接受者用户名 receiver varchar 消息内容 发送时间
content
varchar
sendtime datetime
users变化监控表:global_info
中文名称 字段名 字段类型 字段长度 是否允许为空 备注
4.2存储过程设计
为了提高执行效率,并且简化数据库访问的复杂程度,本系统设计了相应的存储过程完成基本的数据库相关功能。根据对本系统的分析共创建了5个基本的存储过程:用户登录存储过程:UserLogin ;用户注销存储过程:UserLogout;发送消息存储过程:SendMessage ;最近聊天记录存储过程:GetRecentMsg ;获取最新消息存储过程:GetNewMessage。
1. 用户登录存储过程UserLogin实现用户的登录功能,如果成功登录则返回0,反之则返回1;
2. 用户注销存储过程UserLogout实现用户的登出功能,如果成功登出则返回0,反之则返回1;
a) 发送消息存储过程SendMessage 首先对发送者和接收者的用户名进行检查,然后再插入新的聊天记录;
b) 最近聊天记录存储过程:GetRecentMsg 的作用是返回最近两个用户之间的聊天记录;
c) 获取最新消息存储过程GetNewMessage 根据数据库message表中的msg_id字段判断哪些是新消息,凡是消息ID大于msg_id字段的均是新消息。
4.3系统功能分析与设计
本系统的主要任务是提供用户之间实时的交流,方便用户之间相互的沟通。 1. 系统登录。登录模块采用基于标准的MVC架构的开发模式。与一般的登录系统相似,主要是对登录用户的身份进行合法性验证。登录状态分为两种:在线、隐身。根据自己的需求选择登录方式。
2. 登录状态切换。当用户登录后还可以重新选择登录状态,通过选择下拉列表的选项可以切换用户的登录状态是在线或者隐身。或者单击“注销”按钮,将注销用户的登录。
3. 用户列表查看。当用户登录成功后,系统将显示给用户他的所有在线好友,并且实时的更新用户列表:当有好友登录后将即时的显示在用户列表中;当有好友临时退出系统后将在用户列表中消失。
4. 消息提示。我们设计了一个类似于MSN提示框的小窗口,定时的检查是否有新消息,如果有的话弹出这个窗口,用户可以即时回复消息。
5. 查看近期消息。当加载消息发送页面的时候,会首先加载若干条近期的聊天记录,帮助用户回顾以往的聊天内容。
6. 发送消息。用户选择发送对象后,直接进行发送。 7. 接收消息。在消息发送后接收者能够实时接收消息。
8. 根据需求分析和功能说明,开始系统的图形化建模,本系统的功能说明图所示: