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

本文详细探讨了将ASP应用程序迁移到ASP .NET时的关键问题,包括核心API变化、语言变化、与COM相关的兼容性、应用程序配置、状态管理和安全性等多个方面。迁移时应注意API的调整,如Request对象的访问方式,Visual Basic语言的更新,如Option Explicit成为默认,不再支持LET和SET等。此外,还要考虑COM组件的线程模式变化、状态管理选项的扩展和安全性设置的增强。为顺利迁移,建议使用Option Explicit,避免使用默认属性,将代码与内容分离,并确保资源的显式释放。
摘要由CSDN通过智能技术生成

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

简介

虽然 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 由几个固有对象(RequestResponseServer 等)及其有关方法组成。除几处简单变化之外,这些 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”和“20”
   Response.Write (Request.QueryString("values"))
%>

结构变化

结构变化将影响 Active Server Pages 的布局和编码样式。您需要了解其中的一些信息,以确保您的代码能够在 ASP .NET 中运行。

代码块:声明函数和变量

在 ASP 中,可以在代码分隔符之间声明子程序和全局变量。

<%
   Dim X
   Dim str
   Sub MySub()
      Response.Write "这是一个字符串。"
   End Sub  
%>

在 ASP .NET 中,不允许以这种方式进行声明。您必须在 <script> 块中声明所有函数和变量。

<script language = "vb" runat = "server">
   Dim str As String
   Dim x, y As Integer

   Function Add(I 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值