企业级即时通讯软件的设计.docx
《企业级即时通讯软件的设计.docx》由会员分享,可在线阅读,更多相关《企业级即时通讯软件的设计.docx(20页珍藏版)》请在冰豆网上搜索。
企业级即时通讯软件的设计
1.1研究背景和现状分析2
1.2目标2
第1章项目背景
1.1研究背景和现状分析
近年来,随着全球信息化进程的不断发展,网络也在飞速发展。
出于高效、快速地处理各种事务的目的,越来越多的企业在其内部使用局域网来进行工作。
在内部局域网的帮助下,企业得以简化信息流程,提高信息交换的速度,从而提高工作效率。
然而,随着企业规模的扩大,业务量的增加,企业内部的信息越来越私密,企业只希望员工通过内部局域网进行沟通与交流,避免企业内部机密通过Internet泄露到外部。
为了解决上述矛盾,人们提出了开发局域网聊天软件的构想,通过局域网聊天软件,企业员工可以随时的进行即时消息传递,召开网络会议等,有利于提高工作消息效率,同时又保护了企业内部信息的安全性。
基于局域网的即时通信工具,实际上是互联网即时通信工具的一个小规模版本,广域网上的即时通信工具,如今一般采用UDP或者TCP协议体系来实现,开发技术已经比较成熟,比如较早的ICQ,MSNMessenger,Yahoo。
除了这些国外开发的产品,还有国产的有名的QQ,新浪UC,LAVA-LAVA等,这些工具统统都实现了广域网上的即时通信,尽管都是即时通信,实现了即时聊天,以及文件传输的主要功能,但是也各有各的特色,比如ICQ的巨大客户群,MSN的个性化表情,YAHOO通的易操作性等。
这些软件,在使用方面各有特色,在实现方面也各有所长,但基于这些产品正在商业运营阶段,其实现方式属于商业机密,具体细节不可能得知,但是它在大的方面无非就是各种利用各种平台上的网络通信接口,建构基于下层TCP/IP,或者UDP协议的软件产品。
1.2目标
本需求规格说明书编写的目的是为了清晰地说明开发聊天软件要实现的所有功能。
同时也为软件使用者和软件开发者之间建立共同的需求目标,进行一定程度的交流沟通。
同时对软件所需实现的功能模块做了全面的描述。
它是后续开发工作和验收工作的依据文件。
软件使用者和软件开发者以此为共同的基础。
1.3开发环境
1.3.1VisualStudio2005
本系统将采用VisualStudio2005作为开发环境。
VisualStudio2005提供了在设计、开发、调试和部署应用程序时所需的工具,VisualC#集成开发环境(IDE)是VisualStudioIDE中的一种。
打开VisualStudio选择C#即可进入VisualC#集成开发环境,它里面有些工具是与其他VisualStudio语言共享的,还有一些工具(如C#编译器)是VisualC#特有的。
VisualStudio.NET集成开发环境现在包括开发智能设备(如PocketPC)应用程序的工具。
通过使用这些工具和.NETFramework精简版(.NETFramework的子集),您可以在个人数字助理(PDA)、移动电话和其他资源受约束的设备中,创建、生成、调试和部署在.NETFramework精简版上运行的应用程序。
1.3.2数据库
SQLServer2005ExpressEdition是一款重要的Microsoft产品版本,因为该产品专用于非专业开发人员、ISV和爱好者。
它免费、易用、具有强大的功能,并且可以无缝升级到其他SQLServer版本。
有一些功能(例如用户实例)是此SQLServer版本的专有功能,并且默认情况下,安装和部署都是安全的。
SQLServerExpress与VisualStudio2005的集成也简化了您的数据库设计和部署操作。
1.4运行环境
由于本系统是在.NET环境下使用托管代码开发的。
所以服务器和客户机都需要装上Framework2.0作为运行环境。
1.5技术支持
系统将用到用WinSocket、Remoting等开发技术;
1.5.1WinSocket技术
Socket接口是TCP/IP网络的API,Socket接口定义了许多函数或例程,程序员可以用它们来开发TCP/IP网络上的应用程序。
要学Internet上的TCP/IP网络编程,必须理解Socket接口。
选定WINDOWS平台开发网络通信程序,可以选择WINDOWS的SOCKETS编程接口,WindowsSockets是一套开放的、支持多种协议的Windows下的网络编程接口。
现在的Winsock已经基本上实现了与协议无关,你可以使用Winsock来调用多种协议的功能,但较常使用的是TCP/IP协议。
Windowssockets无疑是我们进行网络编程的利器。
所有的WindowsSockets实现都支持流套接口和数据报套接口。
应用程序调用WindowsSockets的API实现相互之间的通讯。
WindowsSockets又利用下层的网络通讯协议功能和操作系统调用实现实际的通讯工作。
1.5.2Remoting技术
采用分布式进行编程的一种技术,Remoting主要用于管理跨应用程序域的同步和异步RPC会话。
在默认情况下,Remoting使用HTTP或TCP协议,并使用XML编码的SOAP或本机二进制消息格式进行通信。
.NETRemoting提供了非常灵活和可扩展的编程框架,并且他可以管理对象的状态。
Remoting通过信道(channel)来传输消息。
.NETRemoting支持两种默认的协议支持通道(Http和Tcp)。
Remoting的具体框架结构如下图所示:
图1.1Remoting架构
在.NET的托管环境中,任何应用程序域都不能访问另外的应用程序域,所以我们在客户端只能通过代理来访问服务器端的应用程序域,代码总是能知道实体对象的具体位置,这样我们只对代理的操作,然后由代理去访问真正的对象,这是透明的,你就象是在访问真实的对象一样。
代理会通过定义的信道准确的去完成你想要的操作。
第2章需求分析
2.1系统功能描述
聊天交流是目前互联网提供的主要内容。
聊天系统有多种实现方式,类似ICQ属于一种点对点的聊天系统;还有一种是基于Socket的集中式聊天系统,这种聊天系统需要登陆统一的聊天服务器。
在基于Socket的聊天系统中,主要有两种角色:
服务器和客户端,不同的客户端登陆集中式的服务器,通过服务器将一个客户端发出的信息推送到其他所有客户端。
基于Socket的聊天系统最早实现是使用网页刷新方式,通过客户端不断地自动刷新,将服务器端整个页面内容下载到客户端显示,这种方式的聊天速度慢,而且有刷屏现象,很快被更新的聊天技术所替代。
聊天系统在客户端和服务器之间主要传送的是文字信息,服务器端只需要把最近的文字信息推送到客户端,这样减少了网络传输内容,节省了网络传输的时间,无疑提高了聊天速度。
这种“推”技术是目前基于Socket聊天系统的主要实现技术。
在基于Socket的聊天系统,客户端和服务器必须保持随时随地的连接。
这有别于普通Web浏览的连接方式。
在使用浏览器访问服务器时,先由客户端发出HTTP协议,然后服务器响应处理这个客户端的响应,再返回处理结果;请求(Request)和响应(Response)是一种一对一的前后因果关系。
而在基于Socket的聊天系统中,客户端发出聊天信息的同时,客户端也在接受服务器发送过来的其他人的聊天信息,因此,请求和响应不存在那种前后对应关系,是两种分别独立进行的进程。
因为服务器任何时候都可能发送信息到客户端,因此,客户端和服务器一旦建立连接,必须能让服务器在以后发送中寻找定位到这个连接。
系统是局域网聊天工具,设计能实现局域网内聊天服务端与客户端的功能。
主要实现如下功能:
聊天服务端:
实现与客户端的连接,接收来自客户端的聊天消息,并且根据客户端的要求把这些信息转发到另外一个或多个聊天客户中。
并实现对客户端登录用户的管理与控制;实现客户端聊天信息的监控与保存。
聊天客户端:
实现与服务端的连接,建立和维护与服务器端的连接,向服务器发送本客户的聊天内容,同时从服务器接受对方的响应。
实现与其他用户的文本的发送,并实现聊天的功能。
2.2系统流程分析
只有充分地了解了聊天程序的工作流程,才能对整个系统的理解更加深刻。
所以对该流程进行分析。
如下图:
图2.1系统流程分析图
2.3系统功能分析
图2.2系统功能图
2.3.1登陆以及身份确认(密码验证)功能的实现
用户在登录界面输入用户ID和密码,系统进行用户身份验证,如果通过用户身份验证则转入相应的工作界面,如果没有通过用户身份验证则显示下列信息:
用户名与密码不符用户可以重新输入正确的ID和密码。
2.3.2用户相关信息
包括用户个人ID、自我介绍、好友列表、好友状态(是否在线)等。
2.3.3点对点即时通讯/文件传输功能
选择通讯对象后,如果是聊天则用户发送信息实时在交流对象的客户端显示。
待有客户端反馈信息时,将会显示在用户相应工作界面中。
如果是传输文件则再弹出对话框让用户选择需要传输的文件,并发送传输文件的请求信息,对方接受到请求信息,同意后建立文件传输的连接进行文件传输。
2.4系统用例图
图2.3系统用例图
2.5用例描述
表2.1用户注册
用例号:
01
用例名称:
用户注册
参与者(Actor):
系统用户
目标:
注册一个聊天账号
前置条件:
能够打开注册界面
主要场景:
注册一个聊天的账号
后置条件:
申请账号成功
备注(作者、时间等):
何建彬2009-5-20
表2.2用户登录
用例号:
02
用例名称:
用户登录
参与者(Actor):
系统用户
目标:
登录已经申请的账号进行聊天
前置条件:
注册一个聊天账号
主要场景:
成功登录账号
后置条件:
登录账号成功
备注(作者、时间等):
何建彬2009-5-20
表2.3用户聊天
用例号:
03
用例名称:
用户聊天
参与者(Actor):
系统用户
目标:
登录已经申请的账号进行聊天
前置条件:
成功登录账号
主要场景:
1.成功登录账号
2.聊天发送、接受消息。
后置条件:
成功进行点对点的聊天
备注(作者、时间等):
何建彬2009-5-20
表2.4用户传输文件
用例号:
04
用例名称:
用户传送文件
参与者(Actor):
系统用户
目标:
登录已经申请的账号进行聊天
前置条件:
成功登录账号
主要场景:
1.成功登录账号
2.聊天发送、接受消息。
3.点对点的传送文件
后置条件:
成功传送文件
备注(作者、时间等):
何建彬2009-5-20
表2.5修改个人信息
用例号:
05
用例名称:
修改个人信息
参与者(Actor):
系统用户
目标:
登录已经申请的账号进行聊天
前置条件:
成功登录账号
主要场景:
打开界面修改个人信息
后置条件:
成功修改个人信息
备注(作者、时间等):
何建彬2009-5-20
2.6系统交互图
图2.3系统交互图
用户在客户端填入必要的信息后,向服务器提交自己的信息。
服务器将按照一定的规则给用户生成一个可用的用户账号,并把此账号返回给用户,用户以后便可以用此账号登录本系统,来和网络上的其它本系统的用户进行及时的收发信息来聊天。
在以后的每一次登录中系统都将对用户进行身份验证,以确定该用户是否为合法的用户。
第3章数据需求分析
3.1数据E-R图
图3.1用户基本信息
图3.2离线消息
图3.3群体
图3.4共享文件
3.2数据库设计
表3.1用户基本信息
1
表名
用户基本信息表
序号
字段名
数据类型
缺省值
NULL
键值
备注
1
用户编号
char(24)
否
主键
2
用户昵称
nvarchar(50)
是
3
用户性别
char(4)
是
4
网络头像
image
是
5
个性签名
nvarchar(60)
是
6
最后登录时间
datetime
是
7
IP地址
nvarchar(25)
是
8
用户密码
nvarchar(10)
是
9
当前状态
Char(3)
是
10
好友列表
nvarchar(4000)
是
以“,”分开
11
参加的群列表
nvarchar(2000)
是
以“,”分开
表3.2离线消息表
2
表名
离线消息保存表
序号
字段名
数据类型
缺省值
NULL
键值
备注
1
接受用户
char(24)
是
2
发送用户
char(24)
是
3
信息体
nvarchar(1000)
是
4
附件文件名
binary
是
5
发送时间
datetime
是
表3.3群体信息表
3
表名
群体表
序号
字段名
数据类型
缺省值
NULL
键值
备注
1
群体编号
char(24)
是
2
群体名称
char(100)
是
3
群体级别
nvarchar(3)
是
高、一般
4
群体口号
char(100)
是
5
创建人及管理员
char(500)
是
用“,”分开
表3.4群体共享文件表
4
表名
共享文件表
序号
字段名
数据类型
缺省值
NULL
键值
备注
1
群体编号
char(24)
否
2
文件名称
char(100)
否
3
上传者编号
nvarchar(3)
否
高、一般
4
上传时间
char(100)
否
5
文件位置
char(500)
否
OS文件
第4章系统分析与设计
4.1类图
图4.1.1系统数据库连接关系图
IConnection是从系统的IDisposable接口继承过来的一个接口,给接口中定义了对某个数据库连接执行的最基本的操作,以后的数据库连接类,都需要从此接口继承,并实现接口中的基本的方法,在实现该接口的类中也可以添加自己需要的方法,来完成必要的功能。
而对其它要用数据库连接的类,可以不管系统的后台的关系数据库管理系统的区别,只需要运用此接口就可以操作单个的数据库连接类了
图4.1.2数据库执行器继承关系图
接口ICommand是从IDisposable继承而来的,其中声明了数据库执行器的最基本的常用的方法的签名,类BaseDBCommand继承接口ICommand并实现了其中的方法,其它的具体的数据库执行器将根据后台数据库的不同类型,将重写基类的某些方法,以完成操作。
图4.1.3类关系图
Message类是实现点对点聊天功能的信息的载体,发送方将此对象序列化成二进制的流后发送到接收信息的一方,接收方接收到二进制的对象的流时,将其反序列化成该对象,然后从对象中获取对象中携带的信息.
4.2组件图
组件图提供系统的物理视图,它的用途是显示系统中的软件与其他软件组件(例如,库函数)的依赖关系,组件图可以在一个非常高的层次上显示,从而仅显示粗粒度的组件,也可以在组建包层次上显示。
图4.2组件图
4.3部署图
部署图表示该软件系统如何部署到硬件环境中。
它的用途是显示该系统不同的组件将在何处物理地运行,以及它们将如何彼此通信。
因为部署图是对物理运行情况进行建模,系统的生产人员就可以很好地利用这种图。
图4.3部署图
4.4服务器端工作流程图
服务器端的工作主要是配置服务器并开启服务,其工作流程如图3.1所示。
图4.4服务器端工作流程
4.5客户端界面导航图
图4.5界面关系图
结论
通过这些时间的开发设计,开发点对点的聊天系统已经可以按照预定要求实现功能,完全实现了点对点的聊天、文件传输等功能。
随着科技的发展和社会的进步,点对点的聊天系统将需要得到进一步改善,相应的功能模块也应相应的增加,比如多媒体方面的内容,以满足用户需求。
通过此次的论文,我学到了很多知识,跨越了传统方式下的教与学的体制束缚,在论文的写作过程中,通过查资料和搜集有关的文献,培养了自学能力和动手能力。
并且由原先的被动的接受知识转换为主动的寻求知识,这可以说是学习方法上的一个很大的突破。
在以往的传统的学习模式下,我们可能会记住很多的书本知识,但是通过毕业论文,我们学会了如何将学到的知识转化为自己的东西,学会了怎么更好的处理知识和实践相结合的问题。
在论文的写作过程中也学到了做任何事情所要有的态度和心态,首先做学问要一丝不苟,对于发展过程中出现的任何问题和偏差都不要轻视,要通过正确的途径去解决,在做事情的过程中要有耐心和毅力,不要一遇到困难就达退堂鼓,只要坚持下去就可以找到思路去解决问题的。
而且要学会与人合作,这样做起事情来就可以事倍功半。
总之,此次论文的写作过程,我收获了很多,即为大学四年划上了一个完美的句号,也为将来的人生之路做好了一个很好的铺垫。
参考文献:
[1]KarliWatson,ChristianNagel等.C#入门经典(第3版)[M].北京:
清华大学出版社.2004.
[2]宋振会.SQLServer2000中文版基础教程[M].北京:
清华大学出版社.2005.
[3]KarliWatson等.BeginningVisualC#2005[M].北京:
清华大学出版.社.2005.
[4]JimArlowIlaNeustadt.UML和统一过程[M].北京:
机械工业出版社.2003.2.
[5]佩里.C#和.NET核心技术[M].北京:
机械工业出版社.2006.7.
[6]天极网新技术研究室.ASP.NET完全入门[M].北京:
重庆出版社.2001.
[7]ScottWorley.ASP.NET技术内幕[M].北京:
人民邮电出版社.2002.
[8]刘斌,张军.ASP.NET+SQLServer动态网站开发案例精选[M].北京:
清华大学出版社.2005.
[9]卢潇主.软件工程[M].北京:
清华大学出版社.2005.
[10]MichaelAmundsen,PaulLitwin,Asp.NET开发人员指南[M].北京:
中国电力出版社.2003.
[11]HeatherOsterloh著.TCP/IPPrimerPlus[M].张金祥译.北京:
人民邮电出版社.2002.
谢辞
论文得以完成,要感谢的人实在太多了,首先要感马乐荣老师,这篇论文是在马老师的悉心指导下完成的。
马乐荣老师渊博的专业知识,严谨的治学态度,精益求精的工作作风,诲人不倦的高尚师德,严以律己、宽以待人的崇高风范,朴实无华、平易近人的人格魅力对我影响深远。
本论文从选题到完成,每一步都是在马老师的指导下完成的,倾注了马老师大量的心血。
马老师指引我的论文的写作方向和架构,并对本论文初稿进行逐字批阅,指正出其中误谬之处,使我有了思考的方向,他的循循善诱的教导和不拘一格的思路给予我无尽的启迪,他的严谨细致、一丝不苟的作风,将一直是我工作、学习中的榜样。
马老师要指导很多同学的论文,加上本来就有的教学任务,工作量之大可想而知,但在一次次的回稿中,精确到每一个字的批改,给了我深刻的印象,使我在论文之外明白了做学问所应有的态度。
更让人感动的是在论文写作过程中。
在此,谨向马老老师表示崇高的敬意和衷心的感谢!
谢谢马老师在我撰写论文的过程中给与我的极大地帮助。
同时,论文的顺利完成,离不开其它各位老师、同学和朋友的关心和帮助。
在整个的论文写作中,各位老师、同学和朋友积极的帮助我查资料和提供有利于论文写作的建议和意见,在他们的帮助下,论文得以不断的完善,最终帮助我完整的写完了整个论文。
另外,要感谢在大学期间所有传授我知识的老师,是你们的悉心教导使我有了良好的专业课知识,这也是论文得以完成的基础。
感谢所有给我帮助的老师和同学以及在这四年大学生活中的每一个人,谢谢你们!
(全文共计8218字)
.