3 开发环境及开发工具 3.1 开发环境的概述 内容来自www.paper51.com 微软发布了.NET开发平台,这是自1993年7月随着WindowsNT3.0出现的Win32 API后微软软件开发平台的第一次大升级。比起Win16来,Win32提供了更多功能强大的API,但没有对工具和技术进行引人注目的改变。与之不同的是,.NET开发平台在开发者用以创造应用程序的工具和技术上做了根本的改变。 .NET开发平台使得开发者创建运行在Internet Information Server (IIS)(互联网信息服务器)Web服务器上的Web应用程序更为容易,它也使创建稳定、可靠而又安全的Windows桌面应用程序更为容易。 copyright paper51.com
.NET开发平台包括以下内容: http://www.paper51.com
(1).NET Framework(架构),包括:CommonLanguage Runtime(CLR)(通用语言运行环境),这是用于运行和加载应用程序的软件组件;新的类库,分级组织了开发者可以在他们的应用程序中用来显示图形用户界面、访问数据库和文件以及在Web上通信的代码集。 paper51.com (2).NET开发者工具,包括:Visual Studio .NET Integrated DevelopmentEnvironment (IDE)(VisualStudio .NET集成开发环境),用来开发和测试应用程序。 copyright paper51.com (3).NET编程语言(例如Visual Basic .NET和新的Visual C#),用来创建运行在CLR下并且使用类库的应用程序。 http://www.paper51.com (4)ASP .NET,一个取代以前的ActiveServer Pages (ASP)的特殊类库,用来创建动态的Web内容和Web服务器应用程序,这些都将采用诸如HTML、XML和Simple Object Access Protocol(SOAP)(简单对象访问协议)等Internet协议和数据格式。 内容来自论文无忧网 www.paper51.com .NET开发平台是一组用于建立Web服务器应用程序和Windows桌面应用程序的软件组件,用该平台创建的应用程序在Common Language Runtime(CLR)(通用语言运行环境)(底层)的控制下运行。CLR是一个软件引擎,用来加载应用程序,确认它们可以没有错误地执行,进行相应的安全许可验证,执行应用程序,然后在运行完成后将它们清除。 内容来自论文无忧网 www.paper51.com 类库集提供了使应用程序可以读写XML数据、在Internet上通信、访问数据库等的代码。所有的类库都建立在一个基础的类库之上,它提供管理使用最为频繁的数据类型(例如数值或文本字符串)的功能,以及诸如文件输入/输出等底层功能。 copyright paper51.com Web服务器应用程序通常依赖于ASP.NET,一个处理Web请求的服务器端的库。ASP.NET又依赖一个用于发送和接收SOAP信息的Web Services库,以及一个用于以浏览器接收用户输入并动态地生成Web页面以示响应的Web用户接口(UI)(有时称作Web 表单)。Windows桌面应用程序通过使用Win表单库(也称作Windows 表单)可以显示一个图形UI。 copyright paper51.com
最后,VisualStudio .NET提供了一个用于在该平台上创建应用程序的图形Integrated Development Ewironment(IDE)(集成开发环境)。程序员可以使用一种或多种.NET编程语言,来编写他们的代码,例如微软的Visual Basic .NET(VB.NET),VisualC++, Visual C#和JScrjpt .NET等。大量其它的.NET编程语言可以从第三方厂商获得。 内容来自www.paper51.com
3.2C#语言的概述 paper51.com C#是一种面向对象的语言,它功能强,易于表现,使用灵活。通过C#可以让开发人员快速的建立大范围的基于微软新的.NET的平台的应用,并且提供大量的开发工具和服务帮助开发人员开发基于计算和通信的各种应用。由于其优良的面向对象设计,在构建从高级业务对象到系统应用的各种不同组件时,C#是一个首要的选择。使用简易的C#语言构造,组件可以被转换为WEB服务,从而允许从运行在任何操作系统上的任何语言中跨越Internet调用它们。不仅仅如此,C#的设计为C++程序员带来了快速的开发能力,而不用牺牲C++已有的功能和控制能力。C#高度保持了与C和C++的一致性。从继承角度来看,C#在更高层次上重新实现了C/C++,熟悉C/C++的开发的人员可以很快的转变为C#开发人员。 内容来自论文无忧网 www.paper51.com C#的重要特性: 内容来自论文无忧网 www.paper51.com (1)开发效率与安全性; paper51.com (2)与Web开发相结合; copyright paper51.com (3)减少了开发中的错误; paper51.com (4)提供内置的版本支持来减少开发费用; 内容来自论文无忧网 www.paper51.com (5)更好的结合商业应用中的流程与软件实现; paper51.com (6)可扩展的协作能力。 paper51.com 3.3 SQL Server数据库的介绍 内容来自www.paper51.com SQL是Structured Query Language(结构化查询语言)的缩写,是用户操作关系数据库的通用语言。SQL虽然叫结构化查询语言,其查询操作确实是数据库中的主要操作,但并不是说SQL语言只支持查询操作,它实际上包含数据定义、数据操纵和数据控制等与数据库有关的全部功能。 copyright paper51.com
Microsoft SQL Server 2000是一个分布式的关系型数据库管理系统,具有客户机/服务器体系结构,采用了Transact-sql的sql语言在客户机与服务器间传递客户机的请求与服务器的处理结果。众所周知,SQL Server 2000能够满足今天的商业环境要求不同类型的数据库解决方案。它一种应用广泛的数据库管理系统,具有许多显著的优点:易用性、适合分布式组织的可伸缩性、用于决策支持的数据仓库功能、与许多其他服务器软件紧密关联的集成性、良好的性价比等。性能、可伸缩性及可靠性是基本要求,而进入市场时间也非常关键。除这些核心企业品质外,SQL Server 2000还为您的数据管理与分析带来了灵活性,允许单位在快速变化的环境中从容响应,从而获得竞争优势。从数据管理和分析角度看,将原始数据转化为商业智能和充分利用Web带来的机会非常重要。作为一个完备的数据库和数据分析包,SQL Server 2000为快速开发新一代企业级商业应用程序、为企业赢得核心竞争优势打开了胜利之门。作为重要的基准测试可伸缩性和速度奖的记录保持者,SQL Server 2000是一个具备完全Web支持的数据库产品,提供了对可扩展标记语言(XML)的核心支持以及在Internet上和防火墙外进行查询的能力。 内容来自www.paper51.com 4 多功能聊天软件的设计方案 内容来自www.paper51.com 4.1 聊天系统流程的分析与设计 内容来自www.paper51.com
此聊天软件是采用C/S结构,其系统流程图如图1所示。 copyright paper51.com
http://www.paper51.com 图1 系统流程图 内容来自www.paper51.com 使用这个聊天软件的用户必须先进行注册,在登录窗体用户单击注册按钮,激活注册窗体。填写相关的注册信息,提交给服务器。服务器将注册信息提交给数据库,并由服务器按注册顺序生成一个用户ID号返回给注册用户,这样注册就完成了。然后用户用注册成功的ID号和注册时的密码进行登录。用户在登录窗口填写用户ID和用户密码,由客户端将登录信息提交给服务器,服务器根据数据库中存储的用户信息与客户端提交的登录信息进行比较,比较一致后,则返回一个登录成功地确认信息给客户端,当客户端收到这个确认信息时,则激活本聊天软件的客户端主窗体。这时你要与好友进行聊天,则必须添加好友,比如用户2要添加用户N为好友,用户2首先向用户N发出添加好友请求信息,用户N接受到用户2的信息,并通过验证发送确认反馈信息给用户2,并且向服务器提交好友添加确认信息,这时服务器就会更新相应用户的好友列表中的信息。好友添加完成后,用户之间就可以进行彼此之间的通信,如文字聊天、视频聊天、语音聊天、文件传输等。 内容来自论文无忧网 www.paper51.com 以上如图1为多功能聊天软件系统的总体流程图,其中包括了登录模块、注册模块、添加好友模块、服务器模块、数据库模块等。在这个多功能聊天软件系统开发设计与实现中,作者主要负责服务器模块、数据库模块、添加好友模块、文字聊天与文件传输功能模块的设计与实现。下面就对数据库模块与添加好友模块的流程和服务器模块进行了分析。 内容来自www.paper51.com 4.2 数据库模块的分析与设计 http://www.paper51.com 该聊天系统的数据库设计的目的是保存用户信息,为用户之间的通信提供相关的数据服务,比如在用户登录时,在登录模块中输入的相关信息(用户ID、密码),就要和数据库中已有的相关信息进行比较,如果相同就表明登录成功,如果不一致则要重新登录。其设计思路是:首先建立一个用户信息总表,这张表包括每个人的详细信息,如用户名、用户ID、用户头像编号等,是在用户注册时,将信息写入该用户信息总表内;然后当一个用户注册成功后,服务器就会自动生成一个该用户的好友表,该表中存放的是该用户添加的好友信息,在登录成功后的客户端界面的好友信息就来源于此好友表,这样两个在线的好友之间就可以通信了。图2所示,为此聊天系统的数据库总体设计结构图。 内容来自www.paper51.com paper51.com 图2 数据库结构图 内容来自www.paper51.com 由于聊天系统的作用是提供用户之间通信,也就是说它的实体就是用户,所以数据库表的关系就为用户表与用户表之间的关系。图3为此聊天工具的数据库的E-R图,它体现了用户1表(用户1ID,用户1姓名,用户1头像ID等),其中“用户1ID”为主键;用户2表(用户2ID,用户2姓名,用户2头像ID等),其中“用户2ID”为主键。他们之间的关系是1:1关系,也就是说用户1的好友表只能添加一个用户2为好友,用户2的好友表只存在一个用户1的ID号。用户1可以添加N个用户为好友,但这些好友的ID号信息在用户1的好友表中是唯一的。 paper51.com 内容来自论文无忧网 www.paper51.com 图3 E-R图 copyright paper51.com 4.3添加好友模块的分析与设计 copyright paper51.com 用户1通过服务器查询数据库中已有的好友资料,并向所要添加的好友发送添加请求,用户2接收到用户1的请求,经过验证将消息发送给用户1,用户1接收到同意添加消息后,添加用户2位好友,并将用户2的信息存入到用户1的好友表中,同时用户2也将用户1的信息存入用户2的好友表中,并把相关信息提交给服务器,让服务器对数据库进行发更新。图4为添加好友系统流程。 内容来自www.paper51.com
http://www.paper51.com 图4 添加好友系统 内容来自www.paper51.com
4.4 服务器模块的分析与设计 内容来自论文无忧网 www.paper51.com 该服务器的作用是对数据进行处理,整个聊天系统依靠服务器对数据的处理来运行,比如登录功能、注册功能、添加好友功能等都是利用服务器对数据的处理来实现的,如图5所示,为服务器运行时的状况。 paper51.com
paper51.com 图5服务器运行图 http://www.paper51.com 本设计主要完成的是文字聊天、文件传输模块,以及添加好友、服务器模块和特殊功能模块,下面对其设计进行实现进行详细说明。 内容来自www.paper51.com
5 文字聊天、文件传输模块的设计与分析 内容来自论文无忧网 www.paper51.com 5.1 文字聊天模块的分析 copyright paper51.com
文字聊天是聊天工具最早的信息传递方式,用户通过打字,将信息传递给好友。至今为止,文字聊天在网络聊天中是应用最为广泛的聊天方式。其实现原理是:通信双方通过Socket套结字进行文字信息的传输。用户双方通过Socket套结字建立连接,并将文字信息以数据流的形式进行发送。如图6所示,为文字信息流程图。 http://www.paper51.com
paper51.com 图6文字聊天流程 内容来自论文无忧网 www.paper51.com 5.2 文字聊天模块功能具体实现 http://www.paper51.com
文字聊天模块功能是聊天软件诞生以来,最早实现信息传递的功能模块。首先双击客户端应用程序,让其程序运行。经过登录验证后,程序开辟一个新的线程udpThread来完成udp的监听功能,并通过调用UdpReceiveMsg()函数来实现对udp数据包的接收功能。在由switch语句块根据控制字符选择相应的功能函数实现相应的功能。关键代码如下: 内容来自论文无忧网 www.paper51.com 文件Client.cs 内容来自www.paper51.com udpThread = new Thread(new ThreadStart(UdpReceiveMsg)); paper51.com udpThread.Start() http://www.paper51.com
……………………… 内容来自论文无忧网 www.paper51.com private void UdpReceiveMsg() paper51.com { 内容来自www.paper51.com …………………… paper51.com udpSocket.Bind(LocalPoint); 内容来自论文无忧网 www.paper51.com count = udpSocket.Receive(read); 内容来自www.paper51.com …………………… http://www.paper51.com switch (ctrl) 内容来自论文无忧网 www.paper51.com { copyright paper51.com case "MSG": //接收信息 内容来自www.paper51.com
this.SelectUser(gostr); paper51.com break; 内容来自论文无忧网 www.paper51.com case "REQ": //接收好友添加请求 内容来自论文无忧网 www.paper51.com this.FriendRequest(gostr); 内容来自www.paper51.com break; 内容来自论文无忧网 www.paper51.com case "AFF": //好友添加反馈信息 内容来自论文无忧网 www.paper51.com this.FriendResqonse(gostr); http://www.paper51.com
break; paper51.com …………………… 内容来自论文无忧网 www.paper51.com } 内容来自论文无忧网 www.paper51.com } 内容来自论文无忧网 www.paper51.com |