简介
将 asp.net 1.x 应用程序转换到新的 asp.net 2.0 框架时,您可能会遇到由于 2.0 框架的更改而引起的问题。在本文中,我们将着眼于转换过程本身以及您在转换过程中可能遇到的某些常见问题。
什么是 asp.net 2.0?
asp.net 2.0 在 asp.net 1.x 框架基础上进行了重要更新。asp.net 2.0 不仅引入了许多新增功能,还从根本上改变了 asp.net 应用程序的设计、编译和部署方式。尽管 asp.net 1.1 应用程序不必进行重新编译就可以在 asp.net 2.0 上运行,但是您会发现升级后使用 asp.net 2.0 的新增功能既可以简化开发过程,又为您提供了更多种编译和部署代码的方法。如果您不熟悉 asp.net 2.0 或不了解升级的好处,请阅读从 asp.net 1.x 迁移到 asp.net 2.0。
就升级应用程序的过程而言,您需要了解将会影响应用程序的编译和部署方式的操作问题。另外,还需要了解新增编码功能对转换过程的影响,以及如何使用新增功能改进应用程序。
操作方面的更改
操作方面的更改会影响您开发、配置和部署 asp.net 应用程序的方式。无论您是开发人员还是网站管理员,都需要了解这些更改,以便正确地创建、部署和维护 asp.net 2.0 应用程序。
没有项目文件。asp.net 1.x 应用程序与 2.0 应用程序之间最明显的差别就是后者没有项目文件(例如 *.vbproj 或 *.csproj)。在 1.x 应用程序中,项目文件包含生成设置、对外部程序集的引用以及项目中的文件列表。而在 2.0 应用程序中,不再需要版本设置和文件列表,因为 web 项目目录下的所有文件都被视为 web 项目的一部分。 |
|
特殊目录。asp.net 1.x 应用程序具有一个必需的目录 (\bin),用于包含程序集。asp.net 2.0 应用程序中则定义了一种更大的目录结构。新目录均以前缀“app_”开头,用于存储资源、程序集、源代码和其他组件。使用这种新的目录结构将不再需要项目文件,并且还可以选用某些新的部署方法。 |
|
代码分离模式。在 asp.net 1.x 中,代码分离模式使内容(例如 foo.aspx)与代码(例如 foo.aspx.vb)分离。内容页面从代码分离页面继承而来,代码分离页面包含用户和设计器生成的代码。asp.net 2.0 通过使用局部类来增强代码分离模式,它允许一个类跨越多个文件。在新的代码分离模式中,内容页面从编译的类继承而来,它由相应的代码分离页面以及自动生成的存根文件组成,存根文件用于为内容页面中使用的控件定义字段声明。此项更改使自动生成的代码与用户的代码分离,并且使代码分离页面显著变小且更加简洁。局部类结构还降低了由于编辑设计器生成的代码而不小心破坏页面的风险。 |
|
编译模式(一个程序集对多个程序集)。在 asp.net 1.x 中,所有的内容页面、代码分离页面和支持代码都预先编译到具有固定名称的单个程序集中。在 asp.net 2.0 中,则即时(默认)创建文件名各不相同的多个程序集。例如,每个 aspx 页面(由内容页面、代码分离页面和隐藏的设计器页面组成)将被编译到各自的程序集中。app_code 目录会自动把公共源代码编译到它自己的程序集中。这种新的编译模式使 asp.net 应用程序的结构发生了一些变化,但大大丰富了部署方式,以及在 web 服务器上提供 web 应用程序的方式。 |
|
部署方式(预编译、完整编译、可更新站点等)。在 asp.net 1.x 中,web 应用程序是作为一个大型程序集而预编译和部署的。内容页面(例如 *.aspx)不在服务器上编译,但可以在服务器上编辑。借助新的页面编译模式和目录结构,您就可以使用多种不同的配置来部署 asp.net 2.0 应用程序。在一种极端的情况下,您可以预编译所有的 aspx 页面并部署由完全编译好的程序集组成的 web 应用程序。在这种模式下,您不能在服务器上轻松地更改该应用程序。在另一种极端情况下,您可以在不预编译任何代码的情况下部署应用程序。在这种配置下,您可以直接在服务器上更改该应用程序中的 .aspx 页面、代码分离文件或其他任何代码。当用户请求服务器上的页面时,页面将被动态编译。 |
以上每项更改都可能需要您在转换 web 应用程序之前或之后修改应用程序的体系结构和部署过程。
新增功能
将 web 应用程序转换到 asp.net 2.0 会使该应用程序更加强大、灵活和易于维护。尽管本文着重于转换应用程序的技术细节,但是您可以通过下列链接了解有关 asp.net 2.0 新增功能的更多信息:
feature overview |
|
personalization |
|
data access |
|
master pages |
|
asp.net development server |
一般来讲,在尝试执行任何新增功能之前,您都需要将 asp.net 1.x 应用程序转换到 asp.net 2.0。每个转换过程都包括两个步骤。第一步,达到功能上的等效,第二步,使用新增功能。将 asp.net 应用程序从 1.x 转换到 2.0 也是这样。首先,您需要使应用程序能够在 2.0 环境下运行。然后,您需要对应用程序进行评估,以找出需要使用 asp.net 2.0 的新增功能和控件的位置。
转换应用程序
将应用程序从 asp.net 1.x 转换到 asp.net 2.0 不仅仅涉及到更改对 framework 版本的引用。事实上,主要有三个方面的更改会影响应用程序的构建方式:
1. |
asp.net 2.0 web 应用程序不使用项目文件(.vbproj 或 .csproj)。项目文件内容已被消除或转变为 web.config 文件。 |
2. |
编译模式发生了多方面的变化。不仅代码分离文件与 aspx 页面之间的关系发生了变化,而且应用程序不再编译到单个程序集中。 |
3. |
创建了新的目录结构以便可以使用新的编译模式和部署选项。所有资源文件、引用、代码分离文件和其他代码产物都必须移到各自的新目录下。 |
所幸的是,许多由于 asp.net 框架的更改而必须实施的应用程序更改已在转换向导中自动实施。
事先的计划
在转换应用程序之前,您应该通读本白皮书中的常见转换问题部分,然后检查您的应用程序。您可能会发现需要更改 1.1 代码以帮助改进转换过程的区域。您还可能希望着眼于转换应用程序所需的时间和培训,以及计划如何对服务器进行更新以支持 asp.net 2.0。
前提条件
转换应用程序之前,需要确保满足以下条件:
1. |
所有开发人员都可以使用 visual studio 2005。 |
2. |
目标服务器上已安装了 .net framework 2.0。(请注意,由于已经使用 asp.net 2.0 对捆绑的 asp.net development server 进行了配置,因此您可以立即开发和运行 web 应用程序。) |
3. |
已验证现有的所有 asp.net 1.x 应用程序都运行正常。 |
您可以阅读本白皮书结尾的“更新服务器”部分来了解有关配置生产服务器的信息。
转换向导
visual studio 2005 具有一个内置的转换向导,此向导有助于转换 asp.net 1.x 应用程序。此向导将自动执行许多必需的基本步骤,能使应用程序满足 asp.net 2.0 中内置的新增结构要求和编码要求。
运行转换向导
当您在 visual studio 2005 中打开 asp.net 1.x web 应用程序时,将会自动调用转换向导。该向导将检测应用程序目录下是否存在项目文件(例如 *.vbproj 或 *.csproj),并自动启动转换过程。
您要做出的第一个选择是,要执行在位转换还是要在转换之前创建应用程序的备份。
如果您选择创建备份,visual studio 2005 将会在您选择的目录下自动创建 asp.net 1.x 应用程序的副本。
接下来,您将会看到转换过程的摘要屏幕,这是最后一个可以停止转换的机会。
转换需要花费几分钟时间,这取决于应用程序的大小。但是,当转换完成时,您将看到一条消息,指明代码已转换。还可能会看到一条关于某些警告或错误的消息。当转换向导进行的更改可能会修改应用程序的行为时,或者当转换向导无法将应用程序完全更新到 asp.net 2.0 时,就会出现警告和错误。
转换完成后,您就可以查看转换报告,从而检查是否需要执行任何其他步骤以完成从 asp.net 1.x 到 2.0 的转换。