65.9K
CodeProject 正在变化。 阅读更多。
Home

ASP.NET 1.x 与 ASP.NET 2.0 的比较

starIconstarIconstarIcon
emptyStarIcon
starIcon
emptyStarIcon

3.34/5 (31投票s)

2006年3月17日

6分钟阅读

viewsIcon

149918

本文探讨了 ASP.NET 1.x 和 ASP.NET 2.0 之间的比较图表。

引言

本文探讨了 ASP.NET 1.x 和 ASP.NET 2.0 之间的比较图表。下表解释了 ASP.NET 1.X 和 ASP.NET 2.0 之间的一些差异。

ASP.NET 2003

ASP.NET 2005

在 .NET 1.x 应用程序编译期间,Visual Studio 2003 会自动仅编译某些文件类型,例如 ASP.NET 页面、Web 服务、用户控件、HTTP 处理程序、资源文件和 Global.asax 类文件。其余文件需要显式编译,然后才能将代码发布到 Web 服务器。

在 Visual Studio 2005 中,您不再需要将所有文件编译到程序集中。ASP.NET 动态编译引擎允许自动编译应用程序,包括 .aspx.cs.vb 文件。这意味着,只需创建应用程序并发布即可。

共享类由代码文件夹中可重用的源代码组件组成。

新的代码分离模型将“按需编译”功能扩展到绑定到网页的类,但它不止于此;帮助类也可以利用它。您可以将帮助类和业务对象放在 App_Code 文件夹中。ASP.NET 会监视该文件夹并编译任何添加或编辑的新类文件。生成的程序集会自动在应用程序中引用,并在参与站点的所有页面之间共享。

您应该只将组件放入 App_Code 文件夹中。不要将页面、Web 用户控件或其他包含非代码元素的非代码文件放入 App_Code 子目录。App_Code 文件夹中的所有文件都动态编译成一个名为 code.dll 的程序集。该程序集具有应用程序范围,并在 Temporary ASP.NET Files 文件夹中创建,该文件夹位于 Web 应用程序空间之外。

要修改应用程序,您需要打开整个项目,进行更改,然后需要再次重新编译才能将代码发布到 Web 服务器。

您只需打开要进行更改的单个文件,然后将代码发布到 Web 服务器,而无需重新编译。

代码隐藏模型需要 IIS 虚拟目录。

代码隐藏模型可以直接访问本地安装的 IIS。

代码隐藏模型缺乏对 FTP、本地文件系统和直接 IIS 访问的支持。

代码隐藏模型有多种打开网站的方式。

它需要开发计算机上的 IIS。

它已经内置了 Web 服务器。

无法在项目外部打开单个页面。

无需打开整个项目;您可以在项目外部打开单个页面,这是通过“按需编译”功能实现的。

它需要显式将文件添加到项目中。

它消除了显式将文件添加到项目中的需要。

ASP.NET 1.x 和 ASP.NET 2.0 的编译模型建立在完全不同的基础上。

新的类派生模型允许页面定义控件,而无需在继承的分离文件中创建受保护成员,也无需显式定义事件。

使用代码分离的页面利用了称为部分类的功能。当页面运行时,ASP.NET 2.0 动态创建并实例化表示页面的类,编译器使用 @Page 指令中的 CodeFile 属性来查找包含代码的文件。

Inherits 属性定义将创建的类的名称,默认情况下,使用页面名称作为创建类名称的基础。

 

ASP.NET 2.0 中的 @Page 指令有几个新属性。这些属性允许开发人员控制新的框架功能,例如个性化和主题。ASP.NET 2.0 中的 Page 类也有新的属性、方法和事件。

属性

Page 对象的属性分为两个不同的组:固有对象页面特定属性。固有对象包括对环境独立对象的引用,例如 CacheUserTrace。它们还包括对构成 HTTP 上下文的经典固有对象的引用,例如 SessionApplicationRequest。页面特定属性是影响或描述页面状态的所有属性,例如 IsPostBackEnableViewStateSmartNavigation

Page 类的新属性也可以归入上述任何一组。

三个重要的新属性是

  • ClientScript - ClientScriptManager 类的实例,表示一个单独的对象,它将所有与客户端脚本一起使用的方法分组。
  • Header.IPageHeader - 如果页面的 <head> 块标记为 runat=server,则表示其内容的接口。
  • Master - 获取确定页面整体外观的主页。

方法

Page 类具有几个新方法,其中大多数只是从基类 Control 继承而来。

一些重要的方法是

  • GetValidators - 返回属于指定组的所有验证器控件的集合。
  • SetFocus - 将输入焦点设置到页面中包含的特定控件。
  • RegisterRequiresControlState - 将指定控件注册为需要控件状态管理的控件。

在 ASP.NET 运行时中,页面的生命周期由一系列事件标记。在 ASP.NET 1.x 中,根据用户交互,页面请求被发送到 Web 服务器。由页面请求启动的事件是 Init。在 Init 事件之后,会引发 Load 事件。在 Load 事件之后,会引发 PreRender 事件。最后,会引发 Unload 事件,并将输出页面返回给客户端。

ASP.NET 2.0 添加了相当多的新事件,让您可以更紧密、更精确地跟踪请求处理。下表讨论了这些新事件。

ASP.NET 2.0 中的新事件

事件

描述

PreInit

这发生在页面开始初始化之前。这是 ASP.NET 2.0 页面生命中的第一个事件。

InitComplete

这发生在页面初始化完成时。

PreLoad

这发生在初始化之后,页面开始加载状态信息之前。

LoadComplete

这发生在页面生命周期的加载阶段结束时。

PreRenderComplete

这发生在预渲染阶段完成且所有子控件都已创建时。在此事件之后,个性化数据和视图状态被保存,并渲染页面 HTML。

开发人员可以通过将这些事件写入代码来动态修改页面输出和组成控件的状态。

有关 ASP.NET 中代码隐藏和编译的详细信息,请访问 MSDN

结论

本文仅关注 ASP.NET 1.X 和 ASP.NET 2.0 之间的一些常见差异。一些概念,例如部分类,大大简化了选择遵循 ASP.NET 开发代码隐藏模型而无需使用 Visual Studio .NET 等 IDE 的开发人员的工作。其他功能,例如部署预编译,明显地转化为更好的性能和知识产权保护。总的来说,随着 ASP.NET 2.0 的推出,Microsoft 为开发人员提供了丰富的功能和极大的灵活性。

© . All rights reserved.