Web 程序设计与架构(txt+pdf+epub+mobi电子书下载)


发布时间:2020-05-15 02:41:06

点击下载

作者:蔺华

出版社:电子工业出版社

格式: AZW3, DOCX, EPUB, MOBI, PDF, TXT

Web 程序设计与架构

Web 程序设计与架构试读:

前言

轻松掌握顶尖技术随着Internet技术飞速发展,越来越多的人喜欢在网上搜索自己需要的资料,也有越来越多的企业将应用系统发布成网站,供自己的用户实现快捷、方便的业务处理。所以,浏览器/服务器(B/S)结构的应用程序也随着这种用户需求而被提升到更高的位置。传统的Windows编程,也一直占据程序设计领域重要的地位,特别是企业级应用市场。森纵艾德(北京)教育科技有限公司汇集众多名师,全力编制一套关于.NET基础与提高系列“职业教育360”丛书,本套丛书关于.NET架构有三本书:《Web程序设计与架构》、《C#面向对象程序设计与框架》、《Windows程序设计与架构》。三本书的目标都是帮助您掌握创建和使用.NET应用程序所需的基本技能,以及让您了解全新的.NET平台以及ASP.NET在其中扮演的角色,同时还可以掌握创建和使用Web窗体、服务器控件、面向对象的程序设计与架构和XML Web服务的必需技能。.NET是微软非常成熟的应用层解决框架技术,如今,随着.NET技术的方便性逐步提高,越来越多的开发人员转入了.NET开发阵营,这使得在这个技术领域内的初学者和急需提高的人员数量在不断增加,为了能使初学人员或原来.NET的技术人员快速完整地了解关于.NET最新的技术,本书从基础到提高,由浅入深,在涵盖所有技术点介绍的同时,最终将具体技术应用到项目实例中,使得读者能够更全面、更容易、更深刻地了解有关.NET的所有新技术与所在领域的应用。与其他.NET的书籍或教材相比,这套书具有以下特点。本书特色本书侧重实用性,从最基本的知识介绍开始,通过一半以上篇幅的从简到难的实验,系统地给读者介绍微软.NET平台的基础。本书介绍的技术都是市场主流的,相关知识搭配是为了帮助读者能尽快融入到市场主流公司的工作中去。另外,本书以基于项目学习为特色,全套教材统一到一个综合大项目中,项目来自于实践,并加以丰富,既有全面的知识点涵盖,又不失实用性和完整性。任务驱动案例授课是将项目中的某项任务为先导,引出解决问题所需要的知识点,并通过实际操作与分析式讲解来理解和讲授知识点。这颠覆了以往以互相毫无关系的简单小实例辅助理解抽象理论的授课方式,使学生能从更为逼真的实训教学项目环境中与项目一起成长,并能从中掌握大规模软件开发过程中软件工程的实践和理论。按照学习的顺序和技术的难易程度,每一个知识点都配套详细的实训实验,通过实训实验让我们以最快的速度学习所有技术的一招一式。除了知识点以外,本书还详细地讲解了150多个实验,手把手地带领读者从零开始,掌握.NET开发的各个方面的知识点;200多个基础项目实验的源码,而当我们学习知识和试验后,还有四个不同方向的中小型真实项目源码供我们理解,掌握它们以后就可以达到胜任著名外企开发职位或一般企业初级项目经理职位的水准。读者对象● 如果你是计算机专业的毕业生,这套书能最快地把大学学到的知识与积累,转换成为就业的资本和能力,让你很快地发挥出自己的积累,创造机会。● 如果你想进入计算机行业,这套书能让你很快地学到实用的技术,给你带来更多的发展与工作机会,明确以后的发展方向。增值服务通过本书的学习相信大家已经对相关的知识点有了一定的了解和认识,本书的学习只是一个开始,也只是一个学习终端,“职业教育360”提供的是一个平台。通过这个平台可以系统地、持续地学习、交流,并获得更多的服务。“职业教育360”根据学员的兴趣爱好、水平高低,完善了全方位职业规划流程。从入学测评、技能学习、技能认证、职业素质教育、就业,为学员提供立体化的职业规划服务,同时网上提供丰富的视频课程、职业测评、在线学习、在线考试、专家博客、在线认证、在线答疑、学习社区、资源共享等资源优势。实训中心拥有资深的名师团队,提供汇集基地实训、项目实战等高质量的课程设置,让学员的技能水准很快的提高。“职业教育360”平台提供了丰富的课后练习、自我评估,以及更多别的学习资源,大家可以通过以下的连接进入学习平台,获取更多的服务。关于本书的更多学习资源:http://www.edu360.cn/book/Web/本书附赠599元的“职业教育360”平台学习资源,请根据书上学习卡的提示登录平台进行学习。关于本书实验部分的源码:本书中涉及的所有实验都有完整的代码文件及工程文件供读者下载。下载地址是:www.broadview.com.cn/13320。除此之外,我们还给读者提供了4个晋级的项目源代码,分别针对不同的方向,涉及Windows窗体、Web、网络通信、移动设备、游戏等。希望读者通过对这4个晋级项目的自学,能成长为一名微软技术的高手。本书作者均来自一线院校老师,具有多年的实践项目经验和教学经验,其他参与编写人员有:宋文爱、孔令德、陆希、尹四清、汤春林、赵树森、白尚汪、唐菁、王宇灵、蔡兴旺,吕艳荟、王洪荣、胡海波。第一部分ASP.NET Web程序设计第1章ASP.NETWeb程序设计(相关知识体系系统学习)第2章ASP.NETWeb程序设计(相关知识案例分析)第1章ASP.NET Web程序设计(相关知识体系系统学习)1.1 ASP.NET开发必备ASP.NET是一项功能强大、非常灵活的新技术,它用于编写动态Web页面,是Microsoft公司的ASP和.NET Framework这两项核心技术的结合。ASP(常称为经典的ASP)在Web计算方面所提供的用于创建动态Web页面的强健、快速、有效的方法已经有7年以上的历史;.NET Framework则是一整套的新技术,Microsoft公司推出此技术的目的是改革未来在所有编程开发中所采用的方法,以及各公司从事业务活动的方法。因此,ASP.NET是利用.NET Framework提供的新功能来创建动态Web页面的一种方法。1.1.1 客户端/服务器工作模式什么是客户端/服务器(Client/Server)?在了解ASP.NET之前,我们先来了解Client及Server间的关系。在计算机的世界里,凡是提供服务的一方我们称为服务器( Server ),而接受服务的另一方我们称为客户端(Client)。我们最常接触到的例子是局域网络里的文件服务器所提供的文件存储服务:提供文件存储的计算机,我们可以说它是服务器;而使用访问服务器的另一方,我们则称作客户端。但是谁是客户端谁是服务器也不是绝对的,如果提供服务的服务器要使用其他机器所提供的服务,则这个服务器便转变为客户端(如图1-1所示)。不过,客户端及服务器的关系不一定建立在两台分开的机器上,同一台机器中也存在这种主从关系。提供服务的服务器及接受服务的客户端也有可能都在同一台机器上,例如我们在提供网页的服务器上通过浏览器执行浏览本机所提供的网页,这样在一台机器上就同时扮演服务器与客户端的角色。当用户浏览网站时,用户充当客户端的角色,向服务器发出请求(Request),服务器收到请求后,对请求进行响应(Response),将用户请求的内容以HTML格式返回给用户,在客户端呈现。图1-1 客户端/服务器模型1.1.2 网页的分类1.静态网页所谓静态网页,就是网页里面没有程序代码,不会被服务器执行。这种网页通常在服务器以扩展名.htm或.html存储,表示里面的内容是以HTML语言编写的。HTML语言是由许多叫做标注(Tag)的元素组成的。这种语言指示了文字、图形等元素在浏览器上面的配置、样式以及这些元素实际上是存放于因特网上的哪个地方(地址),或点选了某段文字或图形后,应该要连接到哪一个网址。我们在浏览这种扩展名为.htm的网页的时候,网站服务器不用执行任何程序就会把档案传给客户端的浏览器直接进行解读。所以除非网站设计师更新网页档案的内容,否则网页的内容是不会因为执行程序而出现不同内容的。2.动态网页(1)客户端的动态Web页面在客户端模型中,附加到浏览器上的模块(插件)完成创建动态页面的全部工作。HTML代码通常随包含一套指令的单独文件传送到浏览器,该文件在HTML页面中引用。但是,常见的另一种情况是这些指令与HTML代码混合在一起。当用户请求Web页面时,浏览器利用这些指令为页面生成纯HTML,也就是说,页面根据请求动态生成,这样就生成了一个要返回到浏览器上的HTML页面。因此,在客户端模型中,生成Web页面有以下六个步骤,如图1-2所示。① Web作者编写一套用于创建HTML的指令,并将它保存到.htm文件中。作者也可以用其他语言编写一套指令,这些指令可以包含在.htm文件中,或放在单独的文件中。② 过一段时间后,有用户在其浏览器中输入了请求Web页面,该请求就从浏览器传送到Web服务器。③ Web服务器确定HTML页面的位置,也许还需要确定包含指令的第二个文件的位置。④ Web服务器将新创建的HTML流与指令通过网络传回浏览器。⑤ 位于浏览器的模块会处理指令,并将Web页面的指令以HTML形式返回——只返回一个页面,即使有两个请求也是如此。⑥ 浏览器处理HTML,并显示该页面。客户端技术近来已不再受欢迎,因为此项技术需要较长的页面下载时间,特别是当需要下载多个文件时,下载时间就更长。客户端技术的第二个缺点是每一个浏览器以不同的方式解释客户端脚本代码,因此无法保证所有的浏览器以相同的方式解释和执行这些指令。客户端技术的第三个缺点是当编写使用服务器资源(如数据库)的客户端代码时会出现问题,这是因为代码是在客户端解释的,而客户端脚本代码并不安全,很容易通过浏览器中的View|Source选项来访问,这不是我们所希望的。图1-2 浏览器处理HTML模型(2)服务器的动态Web页面利用服务器模型,HTML源代码与另外一套指令被传回到Web服务器(可以混合在一起传送,也可以分开传送)。当用户请求页面时,再使用这套指令给页面生成HTML,页面便会根据请求动态生成。在服务器模型中,生成Web页面有以下六个步骤,如图1-3所示。① Web作者编写一套用于创建HTML的指令,并将这些指令保存到文件中。② 有用户在其浏览器中输入请求Web页面,该请求就从浏览器传送到Web服务器。③ Web服务器确定指令文件的位置。④ Web服务器根据指令创建HTML流。⑤ Web服务器将新创建的HTML流通过网络传回浏览器。⑥ 浏览器处理HTML,并显示Web页面。图1-3 浏览器处理HTML模型这次与前面介绍方法的不同之处是处理指令的位置。在页面返回到浏览器之前,所有处理工作都在服务器上完成。与客户端模型相比,此方法的主要优点是只有HTML代码传回浏览器,这意味着页面的初始逻辑隐藏在服务器中,而且可以保证大多数浏览器能够显示该页面。注意:ASP.NET在服务器进行其处理工作。客户端和服务器技术都没有在静态Web页面的正常处理中增加太多的复杂性(客户端技术的步骤⑤或服务器技术的步骤④),但有一步是至关重要的,即对于动态页面技术而言,直到请求Web页面之后,才生成定义Web页面的HTML。例如,可以用处理动态Web页面的任何一种方法编写一套指令,来创建显示当前时间的页面,代码如下所示:利用这种方法,可以通过纯HTML代码构成大多数的Web页面,只是不能硬编码当前时间,而是编写一段特殊代码(替换上面突出显示的代码行),当用户请求页面时,这些代码可以指示Web服务器通过客户端技术中的步骤⑤或服务器技术中的步骤④来生成对应的HTML。本章的后面部分还将用到此示例,并介绍如何用ASP.NET编写此处的代码。服务器技术组件安装在Web服务器上,故页面运行在服务器上。而在客户端技术中, Web页面运行在浏览器上。因此,在把服务器脚本发送回浏览器之前,Web服务器必须先把它们转换为HTML;浏览器不理解服务器代码,也就不能处理它们。1.2 ASP.NET开发入门1.2.1 ASP.NET介绍ASP.NET不仅仅是Active Server Page(ASP)的下一个版本,而且还提供了一个统一的Web开发模型,其中包括开发人员生成企业级Web应用程序所需的各种服务。ASP.NET的语法在很大程度上与ASP兼容,同时它还提供一种新的编程模型和结构,可生成缩放性和稳定性更好的应用程序,并提供更好的安全保护。另外,还可以通过在现有ASP应用程序中逐渐添加ASP.NET功能,随时增强ASP应用程序的功能。ASP.NET是一个已编译的、基于.NET的环境,可以用任何与.NET兼容的语言(包括Visual Basic .NET、C#和JScript .NET.)创建应用程序。另外,任何ASP.NET应用程序都可以使用整个.NET Framework。开发人员可以方便地使用这些技术的功能,其中包括托管的公共语言运行库环境、类型安全、继承等。ASP.NET可以无缝地与WYSIWYG HTML编辑器和其他编程工具(包括Microsoft Visual Studio .NET)一起工作。这不仅使得Web开发更加方便,而且还能提供这些工具的所有优点,包括开发人员可以用来将服务器控件拖曳到Web页的GUI和完全集成的调试支持。当创建ASP.NET应用程序时,开发人员可以使用Web窗体或XML Web Services,或以他们认为合适的方式进行组合。每个功能都能得到同一结构的支持,使你能够使用身份验证方案,缓存经常使用的数据,或者对应用程序的配置进行自定义,这里只列出以下几种可能性。(1)使用Web窗体可以生成功能强大、基于窗体的Web页。生成这些页时,可以使用ASP.NET服务器控件来创建公共UI元素,以及对它们进行编程以用于执行常见的任务。这些控件能够用可重复使用的内置或自定义组件生成Web窗体,从而简化页面的代码。(2)XML Web Services提供了远程访问服务器功能的途径。使用XML Web Services,企业可以公开数据或业务逻辑的编程接口,而客户端和服务器应用程序则可以获取和操作这些编程接口。通过使用诸如HTTP和XML消息传递之类的标准跨越防火墙移动数据, XML Web Services可在客户端/服务器或服务器/服务器方案下实现数据的交换。XML Web Services不用依靠特定的组件技术或对象调用约定。因此,用任何语言编写、使用任何组件模型并在任何操作系统上运行的程序,都可以访问XML Web Services。( 3 )这些模型中的每一个模型都可以充分利用所有的ASP.NET功能,以及.NET Framework和.NET Framework公共语言运行库的强大功能。这些功能以及使用它们的方法概述如下。① 如果您具有ASP开发技能,则一定很熟悉新的ASP.NET编程模型。不过,与ASP相比,ASP.NET对象模型变化显著,它更为结构化并且面向对象。但这也意味着ASP.NET不是完全向后兼容的,几乎所有现有的ASP页都必须经过一定程度的修改后才可以在ASP.NET下运行。此外,对Visual Basic.NET的一些主要更改也意味着,用Visual Basic Scripting版本编写的ASP页通常将不会直接移植到ASP.NET中。不过,在大多数情况下,只需对少数几行代码进行必要的修改。② 从 ASP.NET应用程序访问数据库是 Web站点访问者显示数据的常用技术。ASP.NET使得对数据库的访问比以往更加方便,它还能从你的代码管理数据库。③ ASP.NET提供一种简单的模型,该模型使Web开发人员能够编写在应用程序级运行的逻辑,即可以在Global.asax文本文件或在作为程序集部署的已编译类中编写这种代码。这种逻辑可以包括应用程序级事件,但开发人员可以轻松地扩展这种模型,以适应Web应用程序的需要。④ ASP.NET提供易用的应用程序和会话状态功能,它们对于ASP开发人员来说是熟悉的,且容易与所有其他的.NET Framework API兼容。⑤ 对于需要使用像ISAPI编程接口(随附于以前的ASP版本中)那样功能强大的API的高级开发人员,ASP.NET提供了IHttpHandler和IHttpModule接口。实现IHttpHandler接口,提供了一种与IIS Web服务器的低级别请求和响应服务交互的手段,并提供与ISAPI扩展非常类似的功能,但编程模型却较为简单。实现IHttpModule接口可以包含参与对应用程序发出的每个请求的自定义事件。⑥ ASP.NET可利用.NET Framework和公共语言运行库中性能增强的功能。另外,它还可以提供相对于ASP和其他Web开发平台来说显著的性能改进。所有ASP.NET代码都是编译的,而不是解释的,这就允许对本机代码采用早期绑定、强类型处理,以及实时(JIT)编译,这里只列举几个优点而已。ASP.NET还可方便地分解,即开发人员可以移除那些与他们开发的应用程序不相关的模块(例如,会话模块)。ASP.NET不仅提供丰富的缓存服务(包括内置服务和缓存API两种),而且还提供性能计数器,开发人员和系统管理员可以监视这些性能计数器,以测试新的应用程序和收集有关现有应用程序的度量标准。⑦ 在Web页中编写自定义调试语句,对排除应用程序代码中的错误非常有帮助。但是,如果不移除它们,则会带来麻烦。问题是,在应用程序准备移植到生产服务器时,从页面中移除调试语句会需要很大的工作量。ASP.NET提供TraceContext类,在开发页面时该类用于在页面上编写自定义调试语句。只有当你已经对页面或整个应用程序启用跟踪时它们才出现。启用跟踪还将有关请求的细节追加到页面,或者,追加到存储在应用程序根目录中的自定义跟踪查看器(如果这样指定)。⑧ .NET Framework和ASP.NET为Web应用程序提供默认授权和验证方案,还可以方便地移除、添加或者替换这些方案,这取决于应用程序的需要。⑨ ASP.NET配置设置存储在基于XML的文件中,这些文件都是人可读和可写的。每一个应用程序都可以有不同的配置文件,可以扩展配置方案,以适应你的要求。⑩ 当应用程序安装在同一台计算机上,但使用不同的.NET Framework版本时,就意味着应用程序是并行运行的。IIS6.0使用一个称为辅助进程隔离模式的新进程模型,它不同于IIS早期版本中使用的进程模型。当在Windows Server 2003上运行时,默认情况下ASP.NET使用该进程模型。1.2.2 ASP.NET工作原理在大多数情况下,可以将ASP.NET页面简单地看成一般的HTML页面,页面上包含标记有特殊功能的一些代码段。当安装.NET时,本地的IIS Web服务器会自动配置以查找扩展名为.aspx的文件,且用ASP.NET模块(名为aspnet_isapi.dll的文件)处理这些文件。从技术上讲,ASP.NET模块分析ASPX文件的内容,并将文件内容分解成单独的命令以建立代码的整体结构。完成此工作后,ASP.NET模块将各命令放置到预定义的类定义中(不需要放在一起,也不需要按编写顺序放置),然后使用这个类定义一个特殊的ASP.NET对象Page。该对象要完成的任务之一就是生成HTML流,这些HTML流可以返回到IIS,再从IIS返回到客户。简言之,在用户请求IIS服务器提供一个页面时,IIS服务器就根据页面上的文本、HTML和代码(这对我们来说是最重要的)建立该页面。将ASP、ASP.NET和C#这些术语区分开来是非常重要的。因此在介绍安装和运行ASP.NET之前,要重新对它们进行定义,将它们区分开:● ASP:用于创建动态Web页面的服务器端技术,它只允许使用脚本语言;● ASP.NET:用于创建动态Web页面的服务器技术,它允许使用由.NET支持的任何一种功能完善的编程语言;● C#:本书选用的编程语言,用于在ASP.NET中编写代码。ASP.NET被描述为一门技术而不是一种语言,这是非常重要的!ASP.NET页面可以用许多语言生成。在此并不需要读者了解这些编程语言,本书也不会讲解它们。本书将选择一种语言,即C#,并利用它介绍ASP.NET。之所以选择C#,是因为它对于初学者来说是最为简单的,而且它可以完成其他.NET语言能够完成的大多数功能。另外,选择C#的最为重要的原因是它随ASP.NET免费提供。因此,当安装ASP.NET时,也就得到了C#。介绍到这里,你可能会认为只有掌握了C#,才能学习ASP.NET。这听起来是一个令人可怕的学习过程。不过,请不必担心,并不是要你学两种语言。正像在本书开始时介绍的:ASP.NET不是语言,它是一门技术,该技术通过编程语言访问。本书在介绍C#的时候介绍ASP.NET的功能,换言之,将利用C#创建Web页面,利用ASP.NET来驱动它。当然,在系统学习C#之前,本书将从创建动态Web页面的角度介绍它。总之,ASP.NET是服务器端技术,它允许用户利用功能完善的编程语言创建自己的Web页面。1.2.3 ASP.NET网页代码模型ASP.NET网页由以下两部分组成:● 可视元素,包括标记、服务器控件和静态文本;● 页的编程逻辑,包括事件处理程序和其他代码。ASP.NET提供两个用于管理可视元素和代码的模型,即单文件页模型和代码隐藏页模型。这两个模型功能相同,两种模型中可以使用相同的控件和代码。在请求ASP.NET页且该页将标记呈现给浏览器的过程中,运行的不仅仅是为该页创建的代码。相反,ASP.NET在运行时会生成并编译一个或多个类来实际执行运行该页所需的任务。本主题概述了在运行时生成的代码。1.单文件页模型在单文件页中,标记、服务器元素以及事件处理代码全都位于同一个.aspx文件中。在对该页进行编译时,编译器将生成和编译一个从Page基类派生或从使用@Page指令的Inherits属性定义的自定义基类派生的新类。例如,如果在应用程序的根目录中创建一个名为SamplePage1的新ASP.NET网页,随后便将从Page类派生一个名为ASP.SamplePage1_aspx的新类。对于应用程序子文件夹中的页,将使用子文件夹名称作为生成的类的一部分。生成的类中包含.aspx页中控件的声明以及事件处理程序和其他自定义代码。在生成页之后,生成的类将编译成程序集,并将该程序集加载到应用程序域,然后对该页类进行实例化并执行该页类以将输出呈现到浏览器。如果对影响生成的类的页进行更改(无论是添加控件还是修改代码),则已编译的类代码将失效,并生成新的类。单文件ASP.NET网页中页类的继承模型,如图1-4所示。图1-4 ASP.NET网页中页类的继承模型下面的代码示例演示一个单文件页,此页中包含一个Button控件和一个Label控件,突出显示的部分显示的是script块中Button控件的Click事件处理程序。script块可以包含页所需的任意多代码。代码可以包含页中控件的事件处理程序(如该示例所示)、方法、属性及通常在类文件中使用的任何其他代码。在运行时,单文件页被作为从Page类派生的类进行处理。该页不包含显式类声明,但编译器将生成将控件作为成员包含的新类。(并不是所有的控件都作为页成员公开;有些控件是其他控件的子控件。)页中的代码成了该类的一部分,例如,创建的事件处理程序将成为派生的Page类的成员。2.代码隐藏页模型在代码隐藏模型中,页的标记和服务器元素(包括控件声明)位于.aspx文件中,而你的页代码则位于单独的代码文件中。该代码文件包含一个分部类,即具有关键字partial(在Visual Basic中为Partial)的类声明,以表示该代码文件只包含构成该页的完整类的全体代码的一部分。在分部类中,添加应用程序要求该页所具有的代码。此代码通常由事件处理程序构成,但也可以包括你需要的任何方法或属性。代码隐藏页的继承模型比单文件页的继承模型要稍微复杂一些,其模型生成的步骤如下。步骤1 代码隐藏文件包含一个继承自基页类的分部类。基页类可以是Page类,也可以是从Page派生的其他类。步骤2 .aspx文件在@Page指令中包含一个指向代码隐藏分部类的Inherits属性。步骤3 在对该页进行编译时,ASP.NET将基于.aspx文件生成一个分部类;此类是代码隐藏类文件的分部类。生成的分部类文件包含页控件的声明。使用此分部类,你可以将代码隐藏文件用作完整类的一部分,而无需显式声明控件。步骤4 最后,ASP.NET生成另外一个在步骤3中生成的类继承的类。生成的第二个类包含生成该页所需的代码。生成的第二个类和代码隐藏类将编译成程序集,运行该程序集可以在浏览器呈现输出。代码隐藏ASP.NET网页中页类的继承模型,如图1-5所示。如果你正在处理名为SamplePage的页,则对应的标记位于SamplePage.aspx文件中,而代码位于SamplePage.aspx.vb (Visual Basic)、SamplePage.aspx.cs (C#) 等文件中。在代码隐藏模型中,前面部分中使用的单文件页示例分成两个部分。标记位于一个文件中(在本示例中为SamplePage.aspx),并且与单文件页类似,代码示例如下:图1-5 ASP.NET网页中页类的继承模型在单文件模型和代码隐藏模型之间,.aspx页有两处差别。第一个差别是,在代码隐藏模型中,不存在具有runat="server"属性的script块(如果要在页中编写客户端脚本,则该页可以包含不具有runat="server"属性的script块。)。第二个差别是,代码隐藏模型中的@Page指令包含引用外部文件(SamplePage. aspx.vb或SamplePage.aspx.cs)和类的属性。这些属性将.aspx页链接至其代码。代码位于单独的文件中。下面的代码示例演示一个与单文件页的示例包含相同Click事件处理程序的代码隐藏文件。代码隐藏文件包含默认命名空间中的完整类声明。但是,类是使用partial关键字进行声明的,这表明类并不整个包含于一个文件中。而在页运行时,编译器将读取.aspx页以及它在@Page指令中引用的文件,将它们汇编成单个类,然后将它们作为一个单元编译为单个类。3.选择页模型单文件页模型和代码隐藏页模型功能相同。在运行时,这两个模型以相同的方式执行,而且它们之间没有性能差异。因此,页模型的选择取决于其他因素,例如,要在应用程序中组织代码的方式、将页面设计与代码编写分开是否重要等。单文件模型适用于特定的页,在这些页中,代码主要由页中控件的事件处理程序组成。单文件页模型的优点如下:● 在没有太多代码的页中,可以方便地将代码和标记保留在同一个文件中,这一点比代码隐藏模型的其他优点都重要。例如,由于可以在一个地方看到代码和标记,因此研究单文件页更容易;● 因为只有一个文件,所以使用单文件模型编写的页更容易部署或发送给其他程序员;● 由于文件之间没有相关性,因此更容易对单文件页进行重命名;● 因为页面包含于单个文件中,故而在源代码管理系统中管理文件稍微简单一些。代码隐藏页的优点使它们适用于包含大量代码或多个开发人员共同创建网站的 Web应用程序。代码隐藏页模型的优点如下:● 代码隐藏页可以清楚地分隔标记(用户界面)和代码。这一点很实用,可以在程序员编写代码的同时让设计人员处理标记;● 代码并不会向仅使用页标记的页设计人员或其他人员公开;● 代码可在多个页中重用。1.2.4 ASP.NET 3.5网页模型中的新增功能ASP.NET 3.5对使用代码隐藏文件创建ASP.NET网页的模型进行了重大更改。ASP.NET 1.1版支持以下两种ASP.NET网页代码编写模型:单文件模型和代码隐藏模型。在单文件模型中,代码插入到页中具有属性runat="server"的script块中。2.0版和3.5版本仍然支持单文件模型。在代码隐藏模型中,页标记位于.aspx页中,编程代码位于单独的文件中。2.0版和3.5版本对代码隐藏模型进行了重大改进,使该模型更易于使用且更可靠。1.代码隐藏模型的变化在ASP.NET 1.1中,ASP.NET页的代码隐藏文件定义一个从Page类派生的类。而.aspx页则反过来表示派生自代码隐藏类的另一个类。代码隐藏类是一个完整的类定义,它包含页中所有控件的实例变量、使用委托的显式事件绑定等。ASP.NET还支持主要用于基于设计器的工具(如Visual Studio 2005)的代码隐藏模型。在ASP.NET 1.1的代码隐藏模型中,页的标记在.aspx页中维护,代码在一个单独的类文件中维护。.aspx页与其对应的类文件之间的链接在@Page指令中建立。典型的指令如下所示:ASP.NET 1.1版还支持代码隐藏模型的以下变体形式:@Page指令的Codebehind属性被Src属性所替代。2.ASP.NET 3.5版的代码隐藏模型ASP.NET 2.0版和3.5版本的代码隐藏模型采用称为分部类的新的语言功能。页的代码隐藏文件并非完整类定义,而只包括所需的应用程序代码,如事件处理程序。代码隐藏分部类无需包含实例变量或显式事件绑定。ASP.NET可以在编译过程中从标记推断控件实例并派生事件绑定。代码隐藏文件类似于下面的形式:.aspx页与代码隐藏页之间的链接类似于以前的代码隐藏模型所用的链接。但是,@Page指令使用新的CodeFile属性取代Codebehind或Src属性。此外,该指令还包括一个用于指定页的类名的Inherits属性,如下面的示例所示:3.代码隐藏模型的改进与以前的版本相比,ASP.NET 2.0版和3.5版本中引入的代码隐藏模型提供了以下改进:● 代码隐藏文件更为简单。它仅包含你自己所编写的代码;● 你可以在页中包含控件,而无需在代码隐藏类中为其显式创建实例变量。代码隐藏页必然与标记中声明的控件同步;● 由于可以自声明性控件推断事件绑定,因此你无需在保留的InitializeComponent方法中显式绑定委托。4.改进了代码与内容的分离新的代码隐藏模型简化了标记与代码的独立开发。在旧的代码隐藏模型中,如果要在标记中添加控件,必须同时访问代码隐藏页以添加实例变量。在新模型中,无须访问代码隐藏页即可创建页面布局。1.2.5 ASP.NET应用程序生命周期概述本主题概述应用程序生命周期,列出重要的生命周期事件,并描述如何编写适合应用程序生命周期的代码。在ASP.NET中,若要对ASP.NET应用程序进行初始化并使它处理请求,必须执行一些处理步骤。此外,ASP.NET只是对浏览器发出的请求进行处理的Web服务器结构的一部分。了解应用程序生命周期非常重要,这样才能在适当的生命周期阶段编写代码,达到预期的效果。ASP.NET应用程序生命周期的各个阶段如表1-1所述。表1-1 Asp.NET应用程序生命周期的各个阶段及其说明续表续表续表1.生命周期事件和Global.asax文件在应用程序的生命周期期间,应用程序会引发可处理的事件并调用可重写的特定方法。若要处理应用程序事件或方法,可以在应用程序根目录中创建一个名为Global.asax的文件。如果创建了Global.asax文件,ASP.NET会将其编译为从HttpApplication类派生的类,然后使用该派生类表示应用程序。HttpApplication进程的一个实例每次只处理一个请求。由于在访问应用程序类中的非静态成员时不需要将其锁定,这样可以简化应用程序的事件处理过程。这样还可以将特定于请求的数据存储在应用程序类的非静态成员中。例如,可以在Global.asax文件中定义一个属性,然后为该属性赋一个特定于请求的值。通过使用命名约定Application_event(如Application_BeginRequest),ASP.NET可在Global.asax文件中将应用程序事件自动绑定到处理程序。这与将ASP.NET页方法自动绑定到事件(如页的Page_Load事件)的方法类似。Application_Start和Application_End方法是不表示HttpApplication事件的特殊方法。在应用程序域的生命周期期间,ASP.NET仅调用这些方法一次,而不是对每个HttpApplication实例都调用一次。表1-2列出了在应用程序生命周期期间使用的一些事件和方法。实际远不止列出的这些事件,但这些事件是最常用的。表1-2 应用程序生命周期期间使用的事件和方法续表2.HTTP模块ASP.NET应用程序生命周期可通过IHttpModule类进行扩展。ASP.NET包含若干实现IHttpModule的类,如SessionStateModule类。你还可以自行创建实现IHttpModule的类。如果向应用程序添加模块,模块本身会引发事件。通过使用modulename_eventname约定,应用程序可以在Global.asax文件中预订这些事件。例如,若要处理FormsAuthentication Module对象引发的Authenticate事件,可以创建一个名为FormsAuthentication_Authenticate的处理程序。默认情况下,ASP.NET中会启用SessionStateModule类。所有会话事件将自动命名为Session_event,如Session_Start。每次创建新会话时都会引发Start事件。1.2.6 Web窗体语法1.ASP.NET Web窗体语法元素ASP.NET Web窗体页是带.aspx文件扩展名的声明性文本文件。除静态内容外,还可以使用八个独特的语法标记元素。本节复习这些语法元素中的每一个并提供示例说明它们的用法。呈现代码语法:代码呈现块由元素表示,允许自定义控件内容显示,并且在Web窗体页执行的呈现阶段执行。下面的示例说明可以如何使用它们在HTML内容上循环。

试读结束[说明:试读内容隐藏了图片]

下载完整电子书


相关推荐

最新文章


© 2020 txtepub下载