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