《基于.net的数据库系统的设计与实现本科毕设论文.doc》由会员分享,可在线阅读,更多相关《基于.net的数据库系统的设计与实现本科毕设论文.doc(43页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、 基于.NET的毕业论文数据库系统的设计与实现二一四年六月目录目 录1 绪论11.1 本文课题的背景11.1.1管理信息系统概述11.1.2管理信息系统的发展历史2-411.1.3管理信息系统的结构21.2本文课题的来源21.3本文课题的主要工作32 .NET框架技术研究421 .NET框架(.NET Framework)简介5-1042.1.1通用语言运行时CLR52.1.2.NET基础类库72.1.3 .NET的新特性82.2 新一代Web技术ASP.NET82.2.1 ASP.NET的系统结构102.2.2 ASP.NET Web窗体(Web Form)102.2.3 ASP.NET的状
2、态管理122.3数据库访问技术ADO.NET122.4 ASP.NET中的认证和授权142.4.1在ASP.NET中实现认证142.4.2在ASP.NET中实现授权173 毕业论文数据库系统的分析193.1 系统的总体分析193.2系统的模块功能描述203.2.1上传管理203.2.2审核管理模块203.2.3论文发布模块203.2.4离校管理203.2.5 后台管理203.3系统建模214 论文管理系统的设计与实现234.1 数据库设计234.2 系统设计与实现244.2.1 读者查询下载244.2.2 毕业生论文上传264.2.3审核与离校手续办理314.3 母版页设计414.4 Web.
3、Config配置415 总结与展望42参 考 文 献431 绪论1 绪论特色数据库的建设也是高校图书馆在数字环境下文献信息资源建设的一项重要内容。本章主要介绍了数据库系统的概念,根据本课题的情况,介绍课题的来源及主要任务等。1.1 本文课题的背景毕业论文是反映学校教学、科研成果的一种文献,具有较高的学术价值和科研价值。作为高校文献信息中心,高校图书馆建立本校毕业论文数据库对于加强图书馆文献资源建设、推动学校学科建设、促进高校教学、科研的交流和提高具有重要意义。开发基于.NET的毕业论文数据库系统,实现毕业论文的收集、整理、存储、发布与图书馆离校手续办理功能,有利于提高图书馆工作效率与信息资源的
4、利用率,有利于毕业论文管理工作的规范化。1.1.1管理信息系统概述管理信息系统(MIS)是一个由人、计算机和管理软件等组成的能进行信息的收集、传递、存储、加工和使用的系统1。从管理信息系统的建立、功能等方面来分析,管理信息系统可以定义为:管理信息系统是用系统思想建立起来的,以电子计算机为基本信息处理手段,以现代通讯设备为基本传输工具,且能为管理决策提供信息服务的人机系统。企业管理系统具有如下基本功能:数据处理功能-提供作业数据;计划,控制功能-提供控制信息;预测和决策功能-提供计划和决策信息。1.1.2管理信息系统的发展历史2-4管理信息系统产生至今已经超过半个世纪。在这期间,管理信息系统经历
5、三个阶段的发展。产生阶段(20世纪50年代-60年代)1954年美国通用电器公司首次将计算机应用于企业中的业务数据的处理(计算薪金),引起了数据处理技术的变革.随后,西方国家的一些公司开始着手业务信息系统的开发。(EDP)发展阶段(20世纪70年代)随着数据库技术的出现(60年代末,70年代初),微机的普及,计算机广泛的用来管理和存取数据资源,产生了管理信息系统,即MIS系统。(狭义)成熟阶段(20世纪80年代)随着数据库技术和计算机网络技术的进步,管理信息系统也逐步走向成熟.在系统中已将数据处理与经济管理模型结合起来进行预测和辅助决策.管理信息系统已进入了决策支持系统(DSS系统)发展阶段。
6、管理信息系统的层次关系见下图1-1。图 1.1信息系统层次关系图1.1.3管理信息系统的结构传统的管理信息系统按功能结构可以划分为各个不同的子系统。主要有财务管理子系统,人事管理子系统,订货子系统,生产管理子系统,开发管理子系统,库存管理子系统,信息处理子系统,高层管理子系统等。1.2本文课题的来源作为高校文献信息中心,图书馆建立本校毕业论文数据库,对加强图书馆文献资源建设、推动学校学科建设、促进高校教学、科研的交流和提高具有重要意义。毕业论文是学生与导师的研究成果,具有较高的学术价值与应用价值;毕业论文反映出了学校的科研活动的质量、效益和科研实力,完备的收藏可反映本校的学术发展史和各个历史时
7、期的学术面貌,能为校史的编写提供原始、系统、全面的素材和佐证材料,是学校科研活动和学术水平的集体档案;对以后的研究有很好的借鉴和指导作用;通过收集也可以丰富图书馆馆藏资源,增加馆藏特色。目前,我院尚未建立毕业论文数据库。2013年我院培养的第一届本科生即将毕业,图书馆拟对本科毕业生毕业论文进行收集、整理、数字化存储工作。本课题指在通过对实际情况的调查分析,开发出一套适应我院实际情况的论文数据库系统,提供对毕业论文收集、离校手续办理、数字化存储、WEB检索与全文下载一体化服务功能,可直接应用于图书馆实际工作中,对丰富我校的数字化教育文献资源,提高我院图书馆的信息化服务效率与质量,有重要实践意义。
8、特色数据库的建设也是高校图书馆在数字环境下文献信息资源建设的一项重要内容,通过本课题的实施,对今后我院特色数据库建设工作,具有积极的探索和促进作用。1.3本文课题的主要工作(1)通过实际调查分析法,对毕业生到馆办理离校手续程序进行调查分析,分解步骤,优化工作流, (2) 完成毕业论文的收集、整理、存储、发布工作流程工作规范与制度建设;同时制订数据整合的标准规范格式,用户权限分配原则;完成系统的需求分析。(3)基于以上要求,利用.NET技术完成毕业生论文数据库系统的开发。41 2 .NET框架技术研究2 .NET框架技术研究Microsoft.NET是微软公司针对未来互联网推出的战略架构,是微软
9、公司自MSDOS向WINDOWS转化后的又一次重大策略转变,它针对了新一代的互联网与新一代的系统平台,囊括了几乎所有微软产品的升级换代,其目的是使网络应用程序和网络服务的开发更加简便快捷,以争夺企业级应用市场。.NET架构解决了异构平台的数据交换问题,即应用程序不管采用何种操作系统、编程语言和硬件环境,都可以通过Internet进行通讯和共享数据,从而使分散在Internet上的各种服务有机地结合起来。该架构的核心技术主要包括:.NET框架和ASP.NET。本章对这两方面逐一进行了讨论,并对.NET技术在信息管理系统中的应用进行了研究。21 .NET框架(.NET Framework)简介5-
10、10.NET是一个开发和运行软件的新环境,便于开发基于Web的服务,拥有丰富的运行库服务以支持用多种编程语言编写的组件,具有跨语言和跨平台的互操作能力。它简化了在高度分布式Internet环境中的应用程序开发,为XML Web服务和其它应用程序提供了一个高效安全的开发环境,并全面支持XML。.NET框架旨在实现下列目标:提供一个一致的面向对象的编程环境,无论对象代码是在本地存储和执行还是在本地执行但在Internet上分布,或者是在远程执行;提供一个将软件部署和版本控制冲突最小化的代码执行环境;提供一个保证代码安全执行的代码执行环境,使开发人员的经验在面对类型不相同的应用程序时保持一致;按照工
11、业标准生成所有通讯,以确保基于.NET框架的代码可与任何其他代码集成。.NET的核心思想就是把软件变成服务,在采用了XML作为核心技术后各种软件产品都将可能在网络上运行,不必像今天的软件产品一样必须用光盘方式发送和安装。这种模式被称为Web服务,也是新一代互联网的核心运行模式。.NET框架主要由以下部件组成:通用语言运行环境、Framework类库、ASP.NET以及ADD.NET,如图2.1所示。图 2.1 .NET框架体系结构Fig 2.1 . NET Framework Architecture由图2.1可以看出,通用语言运行时以及它所提供的类库构成了.NET框架的基础。在开发技术方面,
12、.NET框架提供了全新的数据库访问技术ADO.NET,以及网络应用开发技术ASP.NET和Windows Forms;在开发语言方面,.NET提供了VB,VC+,C#,Jscript等多种语言支待;而Visua1 Studio.NET则是全面支持.NET的开发工具。.NET Framework是在Microsoft.NET平台上进行开发的基础,它围绕基于XML的各项服务展开,实现了代码编译、组件配置、程序执行等各个层面的功能,它是一个托管(managed)、高效、安全的执行环境。在.NET Framework下可以实现多程序语言的互操作功能,并且可将程序编译成一种中间语言IL(Intermed
13、iate Language),使其具有跨操作系统平台的功能。.NET Framework包括两个核心模块:通用语言运行时CLR(Common Language Runtime)和.NET基础类库。2.1.1通用语言运行时CLRCLR处于.NET Framework的最底层,是.NET Framework的基础,是将底层平合差异进行抽象的运行基础设施,它为C+、C#、VB.NET等多种语言提供了统一的运行时环境。CLR使得某种高级语言编写的应用程序可以在不同的操作系统和硬件上运行,而不需要按照特定的环境重写应用程序。另外它还提供了更多的功能和特性,比如统一和简化的编程模型,用户不必迷感于Win3
14、2API和COM;避免了DLL的版本和更新问题,从而大大简化了应用程序的发布和升级。为了实现CLR对多种编程语言的支持,就需要在传统的源代码层和编译后的本机代码层中间添加一个代码层。应用程序代码要先编译成独立于机器的中间语言代码,然后再编译成与机器对应的本机代码,图2.2是.NET编译流程图:图2.2 .NET编译流程图Fig 2.2 . NET compiler flow chart具体的编译过程是,首先使用任一种CLR支持的编程语言编写应用程序源代码,然后由编译器将源代码编译成装配件(Assembly),这个装配件包含了中间语言代码IL和元数据(meta data)。IL代码是所有程序及程
15、序组件之间的沟通接口,其特点是独立于操作系统和硬件平台,这就意味着可以编译成IL的程序语言是互通的。元数据用来描述装配件中的数据类型、类、接口、结构和所有实体。元数据还包含一个文件清单(manifest),它包含了版本信息、该装配件调用其他装配件的信息以及控制权限的信息,这样就使.NET应用程序代码具备了自描述特性。CLR在功能上如同一块虚拟的CPU,它执行IL代码并操作数据。为了加载一个应用程序,CLR使用文件清单来确定应用程序所需要汇编的正确版本,并检查IL代码和描述它的元数据,保证程序不会访问它不具有相应许可的内存或其它资源,从而确认代码是“类型安全”的。然后CLR加载IL代码,同时收集
16、有关应用程序的信息,例如:它是从那里下载或安装的、它需要执行什么功能、什么用户试图运行它、汇编是否用来自信任的开发者的数字签名,以及进行数字签名后汇编是否有改动,并按管理策略决定是否允许应用程序运行,甚至还可告知应用程序它无法授权申请的所有权限,并允许应用程序自行决定是否继续运行等。之后,及时编译器JIT将IL代码以调用的对象方法为单位动态编译成可执行的本机代码。通过装配件中的元数据,JIT编译器可以了解代码做些什么以及支持那些平台,它能够利用目标机器的硬件特点,根据平台的具体情况对代码进行即时优化操作,如合理地分配CPU寄存器、通过监控当前的物理和虚拟内存需求来高效地利用内存、产生特定的平台
17、指令以充分利用实际的处理器模式等。经过编译后的代码保存在内存中,直到整个过程完成。不同的机器使用不同的JIT编译器,所以同一个应用程序的IL代码经不同的机器的JIT编译器编译后,可以在不同的机器上执行。借助CLR可以实现语言的互操作性,用一种语言编写的类能与另一种语言编写的类集成,具体表现为:一种语言编写的类能够继承另一种语言编写的类。一个类可以包含另一个类的实例,而不管它是用什么语言编写的。对象或对象的引用能在方法之间传递。在不同的语言之间调用方法时,能够在调试器中调试这些方法的调用,即调试不同语言编写的代码。2.1.2.NET基础类库.NET基础类库由一组广泛的、面向对象的、可以继承的、可
18、被开发者用于任何编程语言的、可重用的类集合组成,它向程序员提供软件组件以编写在CLR的控制下运行的代码。所有的类都遵循一套命名和设计方针,从而大大减小了开发人员学习过程中的难度。这不但使.NET框架类型易于使用,而且还减少了学习.NET框架的新功能所需要的时间。此外,第三方组件可与.NET框架中的类无缝集成。图2.3显示了服务框架中的一些主要类库。框架包括一套开发人员希望在标准语言库中存在的基类库,例如:集合、输入/输出、字符串及数据类,还提供访问操作系统的类,如网络、线程、加密等类型,此外还提供了数据访问类以及开发工具。图 2.3 .net中的主要基础类库Fig 2.3 . net in t
19、he main library foundation.NET基础类库将核心Win32 API最常用的功能和外挂SDK功能封装到一个统一的包中,这些类由被称为命名空间(Name Space)的机制组织起来,按照单一有序的分级组织提供了一个庞大的功能集。跟传统的Windows编程相比,使用和扩展基础类库都比较容易,这使得开发者能够高效,快速地构建基于下一代互联网的网络应用。2.1.3 .NET的新特性.NET是一种全新的技术,它给程序员在进行程序开发时提供了一种全新的编程摸式,因此.NET中也包括了很多新特性,这里只列出一些比重要的特性。一致的编程模式。在.NET环境中,所有的应用程序都采用通用的
20、面向对象编程摸式,不再像Windows环境中那样,既有DLL函致也有COM对象。简化了的编程摸式。由于CLR的作用,在进行编程时不再需要掌握关于COM知识了。运行于多个平台。对于任何操作平台,只要支持NET运行时均可以运行NET应用程序。支持多语言的综合。在.NET环境下,代码重用可以建立在源码的级别上。也就是说,别人用C#语言写的某个类可以直接在C+这样的语言中使用。自动资源管理。在.NET环境下,自动资源管理功能己经加入到CLR之中,同时由于资源回收功能的加入,在一定程度上安全性也得到了保障。一致的出错处理方式,在.NET环境下所有的程序都采用统一的错误处理方式产生异常。安全性。.NET提
21、供丁一整套机制来判断角色和确认身份信息,并且能作到跨进程和机器从而确保所需的代码在远端没有受到破坏。引入XML和SOAP。原有的Client/Server结构已经过时,这样就出现了了全新的B/S结构编程模式,而XML和SOAP能使这种模式很好地工作。全新的编程语言C#。C#像VB一样简单,又像C+一样强大,但绝不是JAVA的克隆,它能作到与XML协议的最大程度的融合,C#的推出与.NET是密切相关的。2.2 新一代Web技术ASP.NETASP是一种用于Web服务的服务器端脚本环境,其主要特征是可以由任何编程语言来编写,它能够和HTML标签、脚本语言、COM(Component Object
22、Model)组件等有机地结合在一起,以此来生成动态网页,创建交互式的Web站点。当用户通过浏览器发出一个对ASP页的请求后,Web服务器接受这一请求,调用相应的ASP页面,执行其中的脚本命令,生成一个由标准HTML标签组成的Web页发送给用户。在这一过程中,所有的脚本处理工作均由Web服务器完成,无需考虑客户端的浏览器是否支持脚本处理的问题。服务器仅将执行的结果而非ASP页面本身返回给客户端浏览器,这样也就减轻了客户端浏览器的负担。但ASP页面每次被访问调用时,都需要在服务器端重新处理脚本,这样就降低了交互的速度,而且ASP只是在微软环境下获得完全的支持,必须依赖基于Win32的组件模型,在其
23、他平台上扩展困难。此外,ASP文件中充斥着HTML、JavaScript等无法调试的代码,使得开发起来比较困难,程序的可读性差,而且会导致性能的损失。ASP.NET是一个已编译、基于.NET的环境,可以用任何与.NET兼容的语言创建应用程序。ASP.NET可以无缝的与HTML编辑器和其他编程工具一起工作,这不仅使得Web开发更加方便,而且还能提供这些工具所能提供的所有优点,包括开发人员可以使用将服务器控件拖到Web页上的GUI和完全集成的调试支持功能。目前在ASP.NET中可以使用三种语言:VB.NET,C#和JavaScript。其实ASP.NET不只支持这三种语言,凡是可以编译成MSIL(
24、Microsoft intermediate language)的程序语言都可以成为制作ASP.NET网页的语言。MSIL是一种中间语言,介于高级程序语言和机器码之间,在ASP.NET中,我们编写的程序语言先编译成MSIL然后MSIL再被编译成机器码加以执行。ASP.NET网页第一次被浏览时,会经过两次编译,所以速度较慢。但是第一次被浏览后,MSIL会被存储下来,当同一网页第二次被浏览时,只需要花费从MSIL编译到机器码然后再执行的时间,结果比ASP网页执行返回速度快。两个工作模式的比较见图2.4:图2.4 ASP.NET和ASP编译方式比较Fig 2.4 ASP.NET and ASP Co
25、mpiler ComparisonASP.NET的优势主要表现在:执行效率高,世界级的支持工具、自定义性和可扩展性等几个方面。ASP.NET建立在.NET框架类的基础之上,它提供了由控件和基础部分组成的“Web程序模版”,大大简化了Web程序和XML Web服务的开发。ASP.NET是建立在微软新一代.NET平台架构上,利用CLR在服务器后端为用户提供建立强大的企业级Web应用服务的编程框架。ASP.NET与ASP相比有以下几大优势:ASP.NET采用了高级语言如C#来进行后台编程,而且高级语言代码和脚本代码可以完全分离,使得代码更清晰,调试性能高,提高了逻辑代码的复用性和共享性。ASP.NE
26、T是运行在服务器后端编译好的高级语言运行时代码,运行时早绑定(Early Binding)、即时编译、本地优化、缓存服务、基于运行时代码受托管与验证的安全机制等都为ASP.NET带来了卓越的性能。ASP.NET还可以利用.NET平台架构的诸多优越性能,如对XML、简单对象访问协议SOAP(Simple ObjectAccess Protocol)、Web服务描述语言WSDL(Web Service Description Language)等Internet标准的强健支持。2.2.1 ASP.NET的系统结构ASP.NET使用IIS来传送内容,以响应HTTP请求,ASP.NET页面是一个.as
27、px文件,图2.5所示的是ASP.NET处理客户请求流程图:图2.5 ASP.NET处理客户请求流程图Fig 2.5 ASP.NET clients deal with the request flow chart在ASP.NET处理过程中,可以访问所有的.NET类、C#或其他语言创建的定制组件、数据库等。实际上,运行C#应用程序和ASP.NET的功能一样强大,在ASP.NET中使用C#就是在运行C#程序。ASP.NET文件包含以下内容:C#、VB.NET、JScript.NET代码和.NET Framework目前或将来支持的其他语言的代码。HTML代码和服务器的处理指令。内嵌的ASP.NE
28、T服务器控件,HTML控件和用户定制的控件。2.2.2 ASP.NET Web窗体(Web Form)ASP.NET Web Form是在面向对象编程模式上设计的,它使代码重用成为可能,并让程序代码和页面显示内容分开。在Visual Studio.NET环境中创建一个类型为C#的Web Application工程,建立一个名为Web的解决方案,其中包含两个文件,一个是WebForm1.aspx,它是一个ASP.NET页面,另一个是WebForm1.aspx.cs文件,它是该Web Form的C#逻辑代码文件。在该页面上添加一个按钮,WebForm1.aspx的核心代码如下所示:这页代码中有几个
29、地方需要解释:在顶部的中描述了该ASP.NET页面后台代码的设置情况。用Languange属性指定使用的是C#代码,用Codebehind属性指定驱动页面的逻辑代码在那个文件中,如本例的WebForm1.aspx.cs,在这个文件中包含一个类的定义,这个类用作Web Form的基类,这个基类可以和.aspx文件中的代码一起使用,生成最终的HTML页面。这样就将ASP.NET与面向对象的模型联系在一起了。在元素内包含的是各种控件的显示标注,其中最重要的属性是runat,将其设置为server,表示窗体的处理将在服务器端上进行。如果没有包含这个属性,在服务器端就不会有任何处理。在窗体内包含了一个按
30、钮控件,其语法是基于XML的,控件可以是服务器端的也可以是客户端的,同样通过runat属性来控制。在WebForm1.aspx.cs文件中包含的则是程序逻辑代码,其中有几点值得注意:代码的首部加载代码默认的应用集,通过“using”关键字来实现。紧接着定义了主类,它从System.Web.UI.Page继承,每个ASP.NET页面都是一个Page对象的实例。ASP.NET的页面事件。Page对象有一个默认的构造方法,注册Page_Init()的一个事件处理程序,并在页面加载的时候调用这个程序。在这个处理程序内调用InitializeComponent()方法,把所有设计阶段的代码添加到窗体中,
31、并对控件的事件处理程序进行注册。通过上述的方式,ASP.NET将程序代码和页面显示标注隔离开来,前台负责显示和美观等功能,后台实现商务逻辑功能。ASP.NET引入了面向对象的高级语言来撰写后台代码,提供了先进的事件处理模型,易于调试且功能强大。2.2.3 ASP.NET的状态管理基于HTTP技术的Web窗体是无状态的,每次将Web请求发送到服务器时,都会重新创建Web页,这意味着每次往返都会丢失所有与该页和该页上的控件相关联的信息。ASP.NET提供了多种方式来维护返行于客户端和服务器之间的状态信息,其中最常用的是Cookie和Session。Cookie用于在客户端上存储少量的经常更改的信息
32、,这些信息与请求一起发送到服务器,它不需要任何服务器资源。Cookie是基于文本结构的,它可以在浏览器会话结束时灭亡,也可以在客户端计算机上无限期存在,这取决于客户端的时间限制。.NET基础类库使用了同名的Cookie类来生成和管理客户端的Cookie。Session是由服务器管理的会话状态,它可存储复杂的数据类型且拥有较高的安全性。Session最常见的用途是与Cookie一起向Web应用程序提供用户标识,会话状态可用于不支持HTTP Cookie的浏览器,因为它是独立于客户端的。.NET基础类库的HttpSessionState类提供了对会话状态值以及会话生存期的访问和控制。2.3数据库访
33、问技术ADO.NET微软推出的.NET框架创立了一种取代COM和COM+的组件模型,ADO.NET是微软推出的在.NET Framework下全新的数据访问编程模型及数据访问技术,它构建在以前的数据访问功能之上,并替代现有的、广泛应用的数据访问接口。ADO.NET为现在的应用程序对各种类型的数据存储像各种数据库、文本文件、XML、某些特定领域如Microsoft Exchange Server的电子邮、日历,ActiveDirectory上基于Window的服务器存储的系统用户、权限等信息,Spreadsheets的访问提供了统一的一致的单一访问方式,因而其更有逻辑,更加结构化。图2.6展示了
34、ADO.NET的软件层次模型图。图2.6 ADO.NET层次结构Fig 2.6 ADO.NET hierarchical structureADO.NET数据提供者是处理特定类型的数据库的类“集”。不同类型数据提供者是不同的一组类,实现各自访问特定类型的数据存储的功能,这也是ADO.NET对各种数据存储类型作的优化。数据提供者为了被调用必须提供一组基本的功能,但特殊的数据提供者可以有许多额外的属性和方法,他们对于被访问的数据存储器的类型来说是唯一的。在Web开发中,数据库访问技术是其关键技术之一。微软早期提供了ADO(ActiveX Data Object)技术来实现数据库访问,ADO通过Co
35、nnection,Command和RecordSet对象对数据库进行操作,当在不同应用程序或组件之间传送RecordSe时,必须将参数和数据包装成标准的二进制格式,再适当地进行数据类型转换,这样就造成了数据访问速度慢、效率低。此外,ADO的数据存取处理主要依赖于两层结构,并且是基于连接的。断开连接,数据就不能进行存取操作。ADO.NET是在.NET Framework下对ADO技术的扩展,ADO.NET的数据处理采用三层体系结构,并且是面向无连接的模式,其体系结构如图2-7所示:图 2.7 ADO.NET体系结构图ADO.NET提出了一个全新的数据访问概念数据集DataSet,DataSet不
36、依赖于数据库链路,它通过数据适配器DataAdapter来访问数据库,DataAdapter是数据源和DataSet之间的“桥”,DataAdapter能自动将对数据的各种操作变换到数据源相关的SQL语句上。DataSet在内部是用XML来描述数据的,由于XML是一种平台无关、语言无关的数据描述语言,用它可描述复杂的数据关系。此外,DataSet与同样是非连接RecordSet相比,它还包含了数据表之间的联系,DataSet实际上是在内存中构建了一个关系数据库模型,所以它有更丰富的编程模型。这样,程序员在编程时可以屏蔽数据库之间的差异,从而获得一致的编程模型。ADO.NET设计了两套数据库通讯
37、程序:一种是OLEDB Data Provider,它可以连接到任何支持对象链接和嵌入式数据库OLEDB(Object Linking and Embedding Database)驱动程序的数据库;另一种是SQL Server Data Provider,它是专为与SQL Server7及以后版本通讯而设计的。假设conn代表数据库连接实例,select代表一条SQL语句,下面分别用这两种方式来访问数据库:用OLEDB Data Provider。 OleDbDataAdapter adapter=new OleDbDataAdapter(select,conn);DataSet ds=ne
38、w DataSet();Adapter.Fill(ds);使用SQLServer Data ProviderSqlDataAdapter adapter=new SqlDataAdapter(select,conn);DataSet ds=new DataSet();adapter.Fill(ds);2.4 ASP.NET中的认证和授权2.4.1在ASP.NET中实现认证ASP.NET提供了三种用户认证方法,Windows认证、Passport认证和Forms认证。Windows认证是通过IIS实现的,只需稍微修改(甚至不修改)页面即可实现;Passport和Forms认证类似:后者是在服务器
39、上实现的,而前者是通过微软公司的订阅服务实现的11。Windows认证请求ASP.NET页面时,客户首先遇到的是Web服务器IIS。此时IIS将对用户进行认证。当IIS处理认证工作时,它可以直接与操作系统(如Windows 2000)进行通信,对用户的证件进行验证。图2.8说明了这种IIS Web应用程序体系结构。图2.8 ASP.NET的安全体系结构Fig 2.8 ASP.NET Security ArchitectureIIS赋予的身份是由Windows用户帐户定义的,因此被称为Windows认证。系统通过在web.config文件中使用下面的代码行来启用这种认证方法:IIS使用三种不同类
40、型的Windows认证:Basic、Digest和NTLM(集成的Windows认证,Integrated Windows Authentication)。以Basic认证为例,认证步骤如下:1)客户向服务器请求被限制的资源;2)Web服务器以“401 Unauthorized”进行响应;3)Web浏览器收到这条消息,并询问用户的证件(通常是用户名和密码);4)Web浏览器通过这些证件来访问服务器资源:5)如果证件无效,则重新回到第2步;6)通过认证后,浏览器便能够访问这些资源。使用Basic认证时,用户名和密码都是以纯文本的方式通过网络传递给服务器,存在安全隐患。Digest认证的工作原理与
41、Basic认证类似,但对传送的用户名和密码进行加密。NTLM认证时,将不会提供用户输入证件,在浏览器连接到服务器后,它便将加密后的、用户登录计算机时使用的用户名和密码信息发送给服务器。采用哪种Windows认证方法,在IIS中做相应设置即可。表单认证使用表单验证时,用户被引导到Web站点的一个登录表单,通过该表单,用户可以提供其证件。如果应用程序根据自定义的方案认可了证件,ASP.NET将在运行浏览器的计算机上创建一个认证Cookie,该Cookie包含某种格式的证件或可用来获得证件的字符串。以后,整个应用程序都将使用该Cookie来进行授权。整个过程步骤如下:1)客户向站点请求被保护的页面;
42、2)如果请求没有包含有效的认证Cookie,Web服务器将把用户重定向到web.config文件中Authentication标签的loginURL属性中指定的URL,该URL包含一个供用户登录的表单;3)证件被输入到表单中,并通过表单传送被提交;4)如果证件有效,ASP.NET将在客户机上创建一个认证Cookie;5)用户便能够被重定向到最初请求的页面。启用表单验证需要在web.config中进行如下设置:credentials PasswordFormat=MDS)其中Credentials属性可以省略,该属性提供了用于认证的用户名和密码定义。Credentials配置段包含认证时ASP.
43、NET使用的有效用户身份。PasswordFormat指定了发送证件给服务器时采用的加密方法,该属性的取值可以是clear,MDS和SHAI.Clear表示不加密,MDS和SHAI是两种加密算法。User元素指定了有效的用户证件。设置好web.config,在代码中控制验证需要用到FormsAuthentication对象,该对象有四个重要的方法:1) SetAuthCookie:设置认证Cookie;2) RedirectFormLoginPage:设置认证Cookie,同时将用户重定向到最初请求的URL;3) GetAuthCookie:使用认证信息创建一个HttpCookie对象;4)
44、Sighout:删除认证Cookie,将用户注销。表单认证的功能非常强大,在实现认证方面提供了非常大的灵活性。由于设置包含在web.config文件中,因此这种认证方法易于实现,系统也可以将用户信息放在数据库中,并创建自定义的子程序来认证用户。办公自动化系统正是利于了表单认证的这些特点,采用了表单认证的方式。Passport认证Passport认证是微软公司提供的一种集中式认证服务,其工作原理与表单认证非常相似,只是不必要创建任何自定义的功能。使用Passport认证的具体步骤如下:1)客户向站点请求安全页面:2)如果请求不含有效的Passport认证Cookie,则Web服务器将用户重定向到Passport登录服务,同时将一些关于请求的信息加密后,再发送给Passport服务。3)用户将看到Passport登录站点的一个登录表单,用户在其中输入证件,并通过表单发送(使用SSL加密)来提交4)如果证件有效,Passport服务将创建一个认证证书,并将其放在查询字符串中。然后用户将被重定向到原来的站点。5)当服务器在查询字符串中找到认证证书后,将为该用户创建一个认证Cookie。Passport认证服务