转至繁体中文版     | 网站首页 | 图文教程 | 资源下载 | 站长博客 | 图片素材 | 武汉seo | 武汉网站优化 | 
最新公告:     敏韬网|教学资源学习资料永久免费分享站!  [mintao  2008年9月2日]        
您现在的位置: 学习笔记 >> 图文教程 >> 站长学院 >> Web开发 >> 正文
ASP.NET 2.0 的内部变化         ★★★★
表 1:页面生命周期方法 方法 活动

Constructor

始终

Construct

始终

TestDeviceFilter

始终

AddParsedSubObject

始终

DeterminePostBackMode

始终

OnPreInit

始终

LoadPersonalizationData

始终

InitializeThemes

始终

OnInit

始终

ApplyControlSkin

始终

ApplyPersonalization

始终

OnInitComplete

始终

LoadPageStateFromPersistenceMedium

PostBack

LoadControlState

PostBack

LoadViewState

PostBack

ProcessPostData1

PostBack

OnPreLoad

始终

OnLoad

始终

ProcessPostData2

PostBack

RaiseChangedEvents

PostBack

RaisePostBackEvent

PostBack

OnLoadComplete

始终

OnPreRender

始终

OnPreRenderComplete

始终

SavePersonalizationData

始终

SaveControlState

始终

SaveViewState

始终

SavePageStateToPersistenceMedium

始终

Render

始终

OnUnload

始终

通过查看页面生命周期的低级别详细信息,我们可以发现在何处能够自然地实现 ASP.NET 2.0 中的许多功能,例如主题和个性化。例如,可以在 IntializeThemes 事件中处理一个主题,在 LoadPersonalizationData 中加载个性化数据,并在以后应用于 ApplyPersonalization 方法。请注意,对于决定 Web 应用程序的最终外观的 UI 元素而言,方法的顺序极其重要。

跨页发送

页面生命周期的其他主要变化包括事件和 Web 窗体的回发。在 ASP.NET 1.x 中,Web 窗体是自动回发给其宿主页面的。也就是说,当用户提交窗体时,窗体数据将始终被提交回包含原始窗体的页面。这种设计可以很容易地存储控件状态,但限制了开发人员执行更复杂操作的能力。

在 ASP.NET 2.0 中,Web 窗体控件有一个新属性,使开发人员可以决定执行提交操作时将窗体数据发送到何处。大多数情况下都需要使用回发机制,因此该机制仍然是默认设置。但是,如果开发人员希望将数据发送到不同的窗体,现在这是可以实现的。


4回发和跨页发送

例如,您可以创建一个多页面向导,其中包含几个不同的窗体。每个窗体按顺序提交给下一个页面,直到用户到达可以执行最终验证的摘要页面。可以在当前上下文中通过 PreviousPage 对象访问上一个页面上的数据。PreviousPage 对象用于存储上一个页面上经验证、可供在当前页面上使用的数据。正是因为有了这个对象,跨页发送才不会牺牲控件的持久性。如果用户需要按顺序备份一个窗体,可以立即访问这些页面数据,而不必重新输入所有数据。

返回页首返回页首

可扩展性

ASP.NET 最初被设计成一个开放式框架。也就是说,构成 ASP.NET 的许多模块和组件都可以扩展、修改或替换以满足您的特定需要。在 ASP.NET 2.0 中,通过新的 HTTPHandlers 和 HTTPModules(现在是框架的标准组成部分)清楚地说明了框架的可扩展本质。

请求管道

在 ASP.NET 中,请求通过 Internet 服务器应用程序编程接口 (ISAPI) 筛选器从 Web 服务器传出,并传递给实际的 ASP.NET 运行库。


5请求管道

当 IIS 接收到请求时,将根据 IIS 设置将扩展名映射到 ISAPI 筛选器。.aspx、.asmx、.asd 及其他扩展名被映射到 aspnet_isapi.dll,这只是一个用于启动 ASP.NET 运行库的 ISAPI 筛选器。当请求遇到 ASP.NET 运行库后,它将在 HTTPApplication 对象(作为 ASP.NET Web 应用程序的主机)上启动。HTTPApplication 对象:

1.

读取计算机和应用程序级别的配置文件。

2.

将请求传递给一个或多个 HTTPModule 实例。每个 HTTPModule 提供一项服务,例如会话维护、验证或配置文件维护。这些模块将请求传递回 HTTPApplication

3.

基于动词和路径将请求传递给 HTTPHandler。动词是指请求中使用的 HTTP 动词(GET、POST、FTP 等),路径是指应用程序中的 URL。根据处理程序的配置方式,请求可能会被作为 ASP.NET 页面(System.Web.UI.PageIHTTPHandler 的实现)进行处理,也可能会触发其他操作,例如对所有 Web 页面进行批编译(precomiplation.asd 将触发 PrecompHandler)。

在 ASP.NET 2.0 中,此模型没有任何变化,但添加了几个新的模块和处理程序以提供更多服务。就像在 ASP.NET 1.x 中一样,您可以扩展、替换或重新配置任何模块或处理程序类以提供自定义功能。

新模块

显然,新增的 HTTPModules 用于支持 ASP.NET 2.0 中提供的新服务。具体来说,具有默认模块设置的 ASP.NET 应用程序包括为以下目的而添加的新模块:

SessionID - 会话标识机制已从 ASP.NET 1.x 会话模块中拆分开来,目的是为了更好地控制 Cookie、URL 重写以及生成会话 ID 的其他形式。

角色管理 - 这是一个新增的模块,用于提供基于角色的服务,以支持新的用户标识机制。此模块有助于将 ASP.NET 应用程序链接到 .NET Framework 中内置的、基于角色的安全性。

匿名标识 - 支持匿名用户的新的个性化功能。此模块可以帮助跟踪匿名用户可以访问的功能,以及跟踪在请求之间维护这些功能的方式。

配置文件 - 配置文件模块与新的配置文件服务相链接,可以帮助提供用户特定的持久性数据存储。

页面计数器- ASP.NET 2.0 中增加的一个新模块,用于链接页面计数器并提高 Web 通信的统计分析。

除了这些新模块以外,某些旧模块的行为也发生了变化:例如,输出缓存模块现在支持本白皮书后面介绍的新的缓存技术。

新处理程序

除了新模块以外,ASP.NET 2.0 还引入了新的处理程序,以支持应用程序配置工具和其他新功能,例如批编译请求。最重要的新处理程序包括用来处理 Web 站点管理请求的“.axd”系列。这些处理程序将启动允许开发人员配置 ASP.NET 用户和其他设置的内部管理工具。这些管理处理程序包括:

Web 管理 - WebAdminHandler 是管理 Web 站点的主页。此处理程序为管理 ASP.NET 2.0 Web 应用程序提供了一个起点。

跟踪 - ASP.NET 1.x TraceHandler 已得到改进,是 ASP.NET 1.x 中唯一可用的“axd”处理程序。

Web 资源 - 借助新的管理工具和 WebResourcesHandler,现在可以将 Web 资源配置为后部署。

缓存的图像 - CachedImageServiceHandler 支持缓存图形组件。

计数器 - SiteCountersHandler 使用页面计数器模块来提供 ASP.NET 2.0 应用程序的访问统计信息。

预编译 - 如前文所述,可以使用 PrecompHandler 对 ASP.NET 应用程序中的所有 ASPX 页面进行批编译。

Web 部件导出 - WebPartExportHandler 支持存储和传输 Web 部件布局。Web 部件是一个新机制,用于个性化门户样式的 Web 应用程序的外观和内容。

与以前一样,HTTPForbiddenHandler 被链接到不应返回的任何文件类型。在 ASP.NET 2.0 中,被禁止的文件类型列表已被扩展,现在包括母版页、外观文件及其他新的开发人员组件。

返回页首返回页首

高级缓存技术

提高 Web 应用程序性能的一种方法是在内存中缓存静态内容。返回缓存的内容始终要比返回新渲染的内容快。但是,缺点是缓存的内容可能会过期。ASP.NET 1.x 支持几种缓存,包括:

页面级别 - 每个页面可以作为一个整体进行缓存,或基于用来访问该页面的参数进行缓存。缓存的页面将在指定时间后过期。

页面片段 - 如果使用用户控件(.ascx 文件)构建页面,则可以独立于页面内容的其余部分单独缓存用户控件。

编程缓存 - 由于有了缓存 API,开发人员还可以缓存对象。缓存 API 具有一个显著的优点,它使开发人员可以为何时应刷新缓存创建不同类型的依赖关系。

在 ASP.NET 2.0 中,页面级别的缓存机制已得到扩展,以支持数据库依赖关系。借助数据库缓存依赖关系,可以将缓存的页面绑定到 SQL Server 数据库中的特定表。如果表发生变化,缓存将自动过期。此外,开发人员现在可以使用缓存后替换功能,用刷新的内容替换缓存的部分内容。缓存后替换功能允许应用程序使用页面级别的缓存,即使页面的部分内容应动态生成。

数据库缓存过期

对大多数数据驱动的 Web 站点来说,缓存是一个复杂的主题,特别是在需要缓存且必须更新数据的情况下。在 ASP.NET 1.x 中,页面可以缓存一段时间,并通过输入参数(查询字符串或 POST 参数)进行组织:

列表 5ASP.NET 1.x 输出缓存指令

<%@ outputcache duration="3600" varybyparam="ProdID" %> 

例如,列表 5 中的代码基于变量 ProdID 在内存中将页面缓存一小时。以上示例中出现的问题是,如果相关业务数据在其他地方被更新,应该怎么办?例如,假设按照产品 ID 缓存一个产品目录页面。如果从管理站点更新了此产品的相关信息(例如库存数量或价格),那么缓存的数据将不正确,显示给客户的数据也不正确。在以前版本的 ASP.NET 中,要解决此问题,需要使用 Response.RemoveOutputCacheItem 手动从缓存中删除该页面,或等到 duration 时间过期后让系统自动更新页面。

ASP.NET 2.0 通过支持数据库缓存依赖关系,从而解决了这一问题。使用 SQL Server 7 和 200 时可以使用表级别的通知,并且 Microsoft SQL Server 2005 将提供更精确级别的通知。例如,以下代码最多可以将产品页面缓存一小时,但添加了对数据库表的第二层依赖关系。

列表 6ASP.NET 2.0 数据库缓存示例

<%@ outputcache duration="3600" 
varybyparam="ProdID" 
  sqldependency="MyDatabase:Products" %>

使用新的 sqldependency 属性时,只要对“Products”表进行更改,缓存的页面就将过期。sqldependency 属性必须引用在 web.config 文件中配置的 datasourcedatasource 用于标识数据库连接以及发出依赖关系通知所必需的参数。

自定义缓存依赖关系

ASP.NET 2.0 附带了一个 CacheDependency 实现,即 SQLCacheDependency 类,它支持 Microsoft SQL Server。实现新的缓存依赖关系是一个复杂的过程,但由于 ASP.NET 2.0 具有可扩展性,因此这一过程是可以实现的。换句话说,您可以创建自己的 CacheDependency 类,以便为其他数据库系统(如 Oracle 或 Sybase)提供类似的功能。

缓存后替换功能

对于几个页面元素保持动态更新,而页面的大部分内容适于缓存的情况,可以利用 ASP.NET 2.0 提供的缓存后替换功能。缓存后替换功能用于通知 ASP.NET 运行库是否应在向用户显示缓存的页面之前重新评估该页面上的某个特定元素。

使用此功能的方法有两种:

调用新的 Response.writeSubstitution 方法,以传递对替换回调函数的引用。

将 <asp:substitution> 控件添加到 Web 页中,并将 methodname 属性设置为回调函数的名称。

不管采用哪种方法,都需要在页面中添加用来指定依赖关系的持续时间和位置的 @OutputCache 指令。

实现缓存后替换功能

可以创建支持缓存后替换功能的控件,以充分利用此功能。这类控件的一个示例就是 AdRotator。列表 7 展示了这样一个页面:

从“Pubs”数据库的“authors”表中检索数据。

将数据绑定到 GridView 控件。

显示来自 AdRotator 的广告。

在标签控件上显示创建页面的时间。

该示例中还添加了 <asp:substitution> 控件(列表中以粗体显示的行)。此控件将其 methodname 属性设置为 uncachedUpdate(返回字符串输出的方法,本例中为当前时间)。无论缓存了什么内容,替换控件都将返回正确的时间。

列表 7PostCache.ASPX 源代码

上一页  [1] [2] [3]  下一页


[C语言系列]NET 中C#的switch语句的语法  [聊天工具]MSN群V2.0Beta1发布 不安装MSN群也能群聊__天极Ye…
[系统软件]托拽Explore中的文件到VB.net的窗口  [系统软件]Boost库在XP+Visual C++.net中的安装
[常用软件]新配色面板:Paint.Net3.0RC1官方下载  [常用软件]bcastr2.0 通用的图片浏览器
[常用软件]最终功能完成:Firefox 2.0 RC1推出  [常用软件]用内建的“Net Meeting”聊天
[VB.NET程序]Henry的VB.NET之旅(三)—共享成员  [VB.NET程序]Henry的VB.NET之旅(二)—构造与析构

ASP.NET 2.0 的内部变化

作者:闵涛 文章来源:闵涛的学习笔记 点击数:1788 更新时间:2009/4/23 10:45:41
代码目录的优点在于,您无需完整地编译项目即可部署,从而降低了不匹配的可能性。但缺点是,您可能需要将未编译的代码存储在服务器上。

此选项特别适用于不需要大量支持代码(不管是以内含代码文件还是外部对象的格式)的 ASP.NET 应用程序。对于简单的应用程序而言,快速部署和测试系统的能力要比更稳健的编译方法更具优势。

返回页首返回页首

页面生命周期

ASP.NET 2.0 在 ASP.NET 页面的生命周期方面有两个主要的变化。首先,ASP.NET 2.0 提供了新的事件以支持新功能,这些功能包括母版页、个性化和集成的移动设备支持。其次,ASP.NET 2.0 引入了跨页发送 Web 窗体的技术。

新事件

与 ASP.NET 1.x 相比,ASP.NET 2.0 提供了更精确的页面生命周期方法堆栈。这些新增的方法为 Web 开发人员提供了更高级别的控制。可以通过任何 ASP.NET 页面上的“Page”对象访问这些事件。

表 1 显示了全面的方法列表。“方法”列显示了实际的事件方法名称,“活动”列指示事件是始终处于活动状态还是仅在 PostBack 操作期间处于活动状态。例如,可以使用新方法 TestDeviceFilter 来确定哪个设备筛选器可用,并使用此信息决定如何显示页面。换句话说,新方法 LoadControlState 仅在回发期间调用。可以替代此方法(与 SaveControlState 结合使用),以创建用于在回发期间保存和恢复控件状态的替换序列化方案。

教程录入:mintao    责任编辑:mintao 
  • 上一篇教程:

  • 下一篇教程:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
      注:本站部分文章源于互联网,版权归原作者所有!如有侵权,请原作者与本站联系,本站将立即删除! 本站文章除特别注明外均可转载,但需注明出处! [MinTao学以致用网]
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)

    同类栏目
    · Web开发  · 网页制作
    · 平面设计  · 网站运营
    · 网站推广  · 搜索优化
    · 建站心得  · 站长故事
    · 互联动态
    更多内容
    热门推荐 更多内容
  • 没有教程
  • 赞助链接
    更多内容
    闵涛博文 更多关于武汉SEO的内容
    500 - 内部服务器错误。

    500 - 内部服务器错误。

    您查找的资源存在问题,因而无法显示。

    | 设为首页 |加入收藏 | 联系站长 | 友情链接 | 版权申明 | 广告服务
    MinTao学以致用网

    Copyright @ 2007-2012 敏韬网(敏而好学,文韬武略--MinTao.Net)(学习笔记) Inc All Rights Reserved.
    闵涛 投放广告、内容合作请Q我! E_mail:admin@mintao.net(欢迎提供学习资源)

    站长:MinTao ICP备案号:鄂ICP备11006601号-18

    闵涛站盟:医药大全-武穴网A打造BCD……
    咸宁网络警察报警平台