面向.NET的Web应用程序设计课件3内置对象优质PPT.ppt
《面向.NET的Web应用程序设计课件3内置对象优质PPT.ppt》由会员分享,可在线阅读,更多相关《面向.NET的Web应用程序设计课件3内置对象优质PPT.ppt(54页珍藏版)》请在冰豆网上搜索。
B第7章目录2022/11/52022/11/5332052057.1创建WebForms一CODEBEHIND简介CODEBEHIND就是所谓的代码分离,自从MICROSOFT公司推出了ASP.NET以后,CODEBEHIND就是一个热门的话题。
在一般的ASP.NET文件中,CODEBEHIND主要是用二个文件来创建一个ASP.NET的页面,其中一个是设计文件,一般以.ASPX或者.ASCX做为扩展名,而另外一个是程序代码文件,一般以.VB或者.CS做为扩展名,其程序设计语言主要是VB.NET或者是C#。
第7章目录2022/11/52022/11/5442052057.1创建WebForms二CODEBEHIND优点用过ASP编过程序的人都知道,ASP程序是把界面设计和程序设计混合在一起的。
因此当程序设计人员要修改应用程序界面布局的时候,就往往需要更改大量与界面无关的代码,对于一个小程序,工作量不是很大,如果对于代码量很大的程序,就是一项工作量不小的事情。
第7章目录2022/11/52022/11/5552052057.1创建WebForms第7章目录2022/11/52022/11/5662052057.1创建WebForms而CODEBEHIND把界面设计代码和程序设计代码以不同的文件分开,对于代码的重复使用,程序的调试和维护都是革命性的。
还有一点是,当你发布你的网站的时候,你就可以利用这种技术来有效的保护你的代码。
这对于程序的安全性是一个提高。
CODEBEHIND技术的出现有点象过去VB或者是DELPHI出现一样。
这也就是他为什么一出现就成为一个热门话题的原因。
第7章目录2022/11/52022/11/5772052057.2Page对象理解类与对象在ASP.NET中,对象都是由类来定义的。
类用于描述对象的字段、属性、方法和事件,对象则是类的实例。
定义了一个类以后,可以用该类来创建所需的任何数量的对象。
每个类都拥有各自的属性、方法、集合和事件。
属性用于描述对象的性质,表示对象的静态特性;
方法用于描述对象的行为,表示对象的动态特性;
集合是由一组相关的值或对象组成,集合提供了一种对相关对象进行分组和管理的方法;
事件则是指对象在一定条件下产生的信息。
访问对象的属性.调用对象的方法.()集合本身也有属性和方法。
例如,利用集合的Count属性可以获取集合中包含的对象数目,利用集合的Add方法可以将一个指定的对象追加到集合的结尾,通过索引值可以获得对集合中成员的引用,而且允许使用ForEach.in循环依次获取集合的成员。
第7章目录2022/11/52022/11/5882052057.2Page对象ASP.NET内置对象第7章目录2022/11/52022/11/5992052057.2Page对象7.2.1Web窗体代码模型窗体代码模型1.ASP.NETPage类类虽然一个虽然一个Web窗体由两个单独的文件组成,但这两个文件在应用程序窗体由两个单独的文件组成,但这两个文件在应用程序运行时形成了一个整体。
项目中所有运行时形成了一个整体。
项目中所有Web窗体的代码隐藏类文件都被编译窗体的代码隐藏类文件都被编译成由项目生成的一个动态链接库文件(成由项目生成的一个动态链接库文件(.dll)。
)。
存放存放Web窗体视觉元窗体视觉元素的素的.aspx页文件也会被编译,但编译的方式稍有不同。
当用户第一页文件也会被编译,但编译的方式稍有不同。
当用户第一次浏览到次浏览到.aspx页时,页时,ASP.NET自动生成表示该页的自动生成表示该页的.NET类文件,并类文件,并将其编译成另一个将其编译成另一个.dll文件。
文件。
2.从从Page类派生类派生当当VisualStudio.NET为为Web窗体创建页和类文件时,它将生成从窗体创建页和类文件时,它将生成从Page基类继承的代码。
例如,如果创建新的基类继承的代码。
例如,如果创建新的Web窗体并将其命名为窗体并将其命名为WebForm1,则会从则会从System.Web.UI.Page类派生一个名为类派生一个名为WebForm1的新类。
的新类。
3.单文件单文件Web窗体窗体在单文件模型中,用户界面元素和程序代码位于同一文件中。
单文件在单文件模型中,用户界面元素和程序代码位于同一文件中。
单文件Web窗体在功能上与由两个文件组成的页非常类似。
例如,在两种类窗体在功能上与由两个文件组成的页非常类似。
例如,在两种类型的页上使用的是相同的控件。
用户仍使用相同的文件扩展名型的页上使用的是相同的控件。
用户仍使用相同的文件扩展名.aspx来请求页,页仍使用服务器端代码来运行,并且页会以流的形式将来请求页,页仍使用服务器端代码来运行,并且页会以流的形式将HTML发送到客户端。
单文件页具有易于部署的优点。
发送到客户端。
第7章目录2022/11/52022/11/510102052057.2Page对象WebServer对页面的处理原理对页面的处理原理MicrosoftInternet信息服务信息服务(IIS)所收到的对某所收到的对某MicrosoftASP.NET页面的每个请求都被移交给页面的每个请求都被移交给ASP.NETHTTP管线。
管线。
HTTP管线由管线由一系列托管对象组成,这些对象按顺序处理该请求,并完成从一系列托管对象组成,这些对象按顺序处理该请求,并完成从URL到普通到普通HTML文本的转换。
文本的转换。
HTTP管线的入口点是管线的入口点是HttpRuntime类。
类。
ASP.NET基础结构为辅助进程中所承载的每个基础结构为辅助进程中所承载的每个AppDomain创建此类创建此类(何类?
何类?
)的一个实例(请注意,该辅助进程的一个实例(请注意,该辅助进程为当前正在运行的每个为当前正在运行的每个ASP.NET应用程序维护一个不同的应用程序维护一个不同的AppDomain)。
HttpRuntime类从内部池中选取一个类从内部池中选取一个HttpApplication对象,并让其处对象,并让其处理该请求。
理该请求。
HTTP应用程序管理器所完成的主要任务就是找出将实应用程序管理器所完成的主要任务就是找出将实际处理该请求的类。
如果请求际处理该请求的类。
如果请求.aspx资源,则处理程序就是一个页资源,则处理程序就是一个页面处理程序面处理程序即某个继承自即某个继承自Page的类的一个实例。
资源类型和处的类的一个实例。
资源类型和处理程序类型之间的关联关系存储于该应用程序的配置文件中。
更理程序类型之间的关联关系存储于该应用程序的配置文件中。
更准确地说,在准确地说,在machine.config文件的文件的部分中定义部分中定义默认的一组映射关系默认的一组映射关系machine.config。
然而,应用程序也可以在本然而,应用程序也可以在本地的地的web.config文件中自定义自己的文件中自定义自己的HTTP处理程序列表。
下面处理程序列表。
下面的程序行举例说明了定义用于的程序行举例说明了定义用于.aspx资源的资源的HTTP处理程序的代处理程序的代码。
码。
第7章目录2022/11/52022/11/511112052057.2Page对象扩展名可关联到一个处理程序类,或者更普遍地关联到一个处理扩展名可关联到一个处理程序类,或者更普遍地关联到一个处理程序工厂程序工厂(handlerfactory)类。
在所有情况下,负责处理请求类。
在所有情况下,负责处理请求的的HttpApplication对象都会获得一个实现对象都会获得一个实现IHttpHandler接口接口的对象。
如果根据的对象。
如果根据HTTP处理程序来解析关联资源处理程序来解析关联资源/类,那么类,那么所返回的类将直接实现该接口。
如果资源绑定到处理程序工厂,所返回的类将直接实现该接口。
如果资源绑定到处理程序工厂,则需要另外一个步骤。
处理程序工厂类实现则需要另外一个步骤。
处理程序工厂类实现IHttpHandlerFactory接口,而该接口的接口,而该接口的GetHandler方法返回方法返回一个基于一个基于IHttpHandler的对象。
的对象。
HTTP运行时如何能完成整个循环并处理页面请求呢?
运行时如何能完成整个循环并处理页面请求呢?
IHttpHandler接口特别提供了接口特别提供了ProcessRequest方法。
通过对方法。
通过对代表所请求页面的对象调用此方法,代表所请求页面的对象调用此方法,ASP.NET基础结构启动基础结构启动相应过程,从而针对浏览器生成输出。
相应过程,从而针对浏览器生成输出。
第7章目录2022/11/52022/11/512122052057.2Page对象页面生存周期页面生存周期一旦完全确定一旦完全确定HTTP页面处理程序类,页面处理程序类,ASP.NET运行时就调用该运行时就调用该处理程序的处理程序的ProcessRequest方法以处理请求。
通常情况下,无方法以处理请求。
通常情况下,无需更改此方法的实现方式,因为它是由需更改此方法的实现方式,因为它是由Page类提供的。
类提供的。
此实现方法一开始就调用此实现方法一开始就调用FrameworkInitialize方法,以此建立页方法,以此建立页面的控件树。
此方法是面的控件树。
此方法是TemplateControl类(类(Page类本身就是类本身就是从该类派生出来的)的一个受保护的虚拟成员。
任何针对从该类派生出来的)的一个受保护的虚拟成员。
任何针对.aspx资源而动态生成的处理程序都重写资源而动态生成的处理程序都重写FrameworkInitialize。
在此方法中,该页面的完整控件树得以构建。
接下来,接下来,ProcessRequest使该页面经历若干阶段:
初始化,加载视使该页面经历若干阶段:
初始化,加载视图状态信息和回发数据,加载页面的用户代码并执行回发服务图状态信息和回发数据,加载页面的用户代码并执行回发服务器端事件。
随后,该页面进入呈现模式:
收集更新后的视图状器端事件。
收集更新后的视图状态;
生成态;
生成HTML代码然后将其发送到输出控制台。
最后,卸代码然后将其发送到输出控制台。
最后,卸载页面,并认为已完成对该请求的处理。
载页面,并认为已完成对该请求的处理。
第7章目录2022/11/52022/11/513132052057.2Page对象在各个阶段中,页面都会激发一些在各个阶段中,页