当前位置: 首页 > 图文教程 > 网络编程 > ASP > 迁移到 ASP .NET:需考虑的重要问题(1)

ASP
对连串英文自动换行的解决方法 IE5.5
怎样写你自己的EMAIL组件(原理)
ASP中有关timeout超时的体会
用ASP实现从SQL Server导出数据到Access
ASP向NT域中加一个用户
ASP乱码的解决方法
关于 aspsmartupload 注册问题
利用XML不离开页面刷新数据
IIS 处理 SEARCH 请求漏洞
不用组件实现上载功能(1)
不用组件实现上载功能(2)
在网页中实现OICQ里的头像选择的下拉框
仅用xsl和asp实现分页功能
如何使用context()方法将数据置入表格(XML)
利用ASP从远程服务器上接收XML数据
将数据库里面的内容生成EXCEL
怎样在ASP里面创建统计图表
加密你的Access数据库
利用global.asp定时执行ASP
加密QueryString数据

迁移到 ASP .NET:需考虑的重要问题(1)


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-11-03   浏览: 29 ::
收藏到网摘: n/a

  简介
虽然 Microsoft® ASP .NET 的设计者在保持 ASP 应用程序的向后兼容性方面做了大量不懈的努力,但在将 Web 应用程序由 ASP 向 ASP .NET 迁移之前,还是应该了解一下几个关键的问题。在 .NET 平台和 ASP .NET 中对现有技术进行了改进并采用了一些新技术,透彻理解这些技术有利于简化此迁移过程,但这需要经过一段漫长的时间。

本文探讨各方面的变化,以便让用户清楚地了解建立 ASP 应用程序并使其在 ASP .NET 环境中运行所必须进行的一些工作。同时,它还指出了 ASP .NET 的一些新特性,用户可以充分利用这些新特性改进现有的应用程序。但这决不是 ASP .NET 所有新特性的全面介绍,而只是着重探讨一下成功迁移时需考虑的一些问题。

我设想,由于大多数 ASP 应用程序都使用 Microsoft® Visual Basic® Scripting Edition (VBScript),所以大多数用户都会选择使用 Visual Basic .NET 迁移到 ASP .NET。显然,这不是必需的。但如果决定在迁移的同时更改语言,将需要进行一些额外的工作,而且很可能还会涉及到设计和结构方面的更改。

共存性
在讨论具体的兼容性和迁移问题之前,了解一下 ASP 和 ASP .NET 如何共存非常重要。ASP 和 ASP .NET 应用程序可以同时在服务器上运行,而互不影响。这主要是由于两种技术各自使用不同的文件扩展名(.asp 与 .aspx)和不同的配置模型(配置数据库/注册表与基于 XML 的配置文件)。这两种系统还各自具有相应的处理引擎。

让某个应用程序的一部分运行 ASP,而另一部分运行 ASP .NET,这是完全可能的。如果需要将一个快速发展的大型站点一次一小部分地迁移到 ASP .NET,这种特性将对您大有益处。某些用户可能会说,最好能一次性迁移和部署整个站点。对于某些类型的 Web 应用程序来说也许是如此,但我认为,有许多站点并不能这样:考虑到站点内容和外观的绝对大小、复杂程度以及迅速变化,这种方式非常缺乏灵活性。毕竟,对于一个盈利的网站来说,那些掏腰包的人不可能允许您停止他们的新增功能,而将整个网站迁移到这种热门的新技术。另外,如果把向 ASP .NET 迁移作为一项长期投资,您将希望利用此机会尽可能多地对结构和设计做一些改进。综合这些情况,分阶段的共存性迁移是绝对必要的。

兼容性问题
将应用程序向 ASP .NET 迁移可能不是一件容易的事情;但是,也不应该很困难。ASP .NET 与 ASP 的兼容性非常好,给用户的感觉就好象 ASP .NET 是 ASP 的一个完整翻版。ASP .NET 设计者的最初目标是实现与 ASP 百分之百的向后兼容性,但在随后的工作中,他们不得不改变了这一初衷,以便彻底地改进这一平台。不过不要担心,我们尽可能进行了大量改进,应该不会需要您进行太多的工作。所发生的实际变化可以归纳为下列几类:

核心 API 的变化
结构变化
Visual Basic 语言的变化
与 COM 有关的变化
应用程序配置的变化
状态管理问题
与安全性有关的变化
数据访问
下面将详细讨论上述各个方面的变化。

核心 API 的变化
ASP 的核心 API 由几个固有对象(Request、Response 和 Server 等)及其有关方法组成。除几处简单变化之外,这些 API 在 ASP .NET 下可以继续正常运行。所有变化都与 Request 对象有关,如表 1 所示:

表 1:API 的变化

方法 变化
Request(item) 在 ASP 中,此方法返回字符串数组。在 ASP .NET 中,它返回 NameValueCollection。
Request.QueryString(item) 在 ASP 中,此方法返回字符串数组。在 ASP .NET 中,它返回 NameValueCollection。
Request.Form(item) 在 ASP 中,此方法返回字符串数组。在 ASP .NET 中,它返回 NameValueCollection。

正如您所见,对于涉及到的所有方法,其变化基本上都相同。

如果访问的 item(项)只包含特定关键字的一个值,您将不必修改自己的代码。但是,如果给定的关键字具有多个值,您将需要使用其它方法返回值的集合。另请注意,Visual Basic .NET 中的集合都是基于 0,而 VBScript 中的集合是基于 1 的。

例如,在 ASP 中,将按下列方式访问 http://localhost/myweb/valuetest.asp?values=10&values=20 请求返回的各个查询字符串值:

<%
'输出“10”
Response.Write Request.QueryString("values")(1)

'输出“20”
Response.Write Request.QueryString("values")(2)
%>

在 ASP .NET 中,QueryString 属性返回 NameValueCollection 对象,在检索所需的实际项之前,将需要从该对象中检索 Values 集合。另外需要注意,集合中的第一项是使用 0 而非 1 索引进行检索的:

<%
'输出“10”
Response.Write (Request.QueryString.GetValues("values")(0))

'输出“20”
Response.Write (Request.QueryString.GetValues("values")(1))
%>

下列代码在 ASP 和 ASP .NET 中的运行结果相同:

<%
'输出“10”