迁移到 ASP .NET:需考虑的重要问题(1)(2)
2008-02-23 05:06:01来源:互联网 阅读 ()
新增的 Page 指令
在 ASP 中,必须将所有指令置于网页中同一分隔块内的第一行。例如:
<%LANGUAGE="VBSCRIPT" CODEPAGE="932"%>
在 ASP .NET 中,需要将 Language 指令替换为 Page 指令,如下所示:
<%@Page Language="VB" CodePage="932"%>
<%@QutputCache Duration="60" VaryByParam="none" %>
可以根据需要包含任意多行指令。指令可以位于 .apsx 文件中的任意位置,但标准做法是将其置于文件的最开头。
在 ASP .NET 中新增了几个指令。我鼓励您在 ASP .NET 文档中查看一下这些指令,了解它们可以为您的应用程序带来什么样的好处。
生成函数不再有效
开发者指出,在 ASP 中,他们可以使用“生成函数”灵活处理一些问题。“生成函数”基本上是一个子程序,在其主体中嵌入了大量 HTML。例如:
<%Sub RenderMe()
%>
<H3> 这是正在生成的 HTML 文本。</H3>
<%End Sub
RenderMe
%>
虽然使用这类函数能够实现非常酷的功能,但 ASP .NET 中不允许使用这类编码。这可能是出于优化性能的考虑。我想您肯定遇到过,像这样将代码与 HTML 混在一起时,有些函数很快就变得可读性极差,而且难以管理。在 ASP .NET 中,实现此目的的最简单方法是调用 Response.Write 来代替 HTML 输出,如下所示:
<script language="vb" runat="server">
Sub RenderMe()
Response.Write("<H3> 这是正在生成的 HTML 文本。</H3>")
End Sub
</script>
<%
Call RenderMe()
%>
注意,我说的是“最简单的方法”,但并不一定表示是最佳方法。根据生成代码的复杂程度和数量,使用自定义 Web 控件效果可能更好,这种控件允许您通过编程设置 HTML 属性,并将代码与内容真正分开,使代码可读性更强。
Visual Basic 语言的变化
正如我前面提到过的,VBScript 已集成到了更完整、功能更强大的 Visual Basic .NET 中。这一节,我将重点讲述您可能会遇到的与 Visual Basic 语言变化有关的一些问题。但需注意,这并不是详尽的 Visual Basic 变化列表。我只是着重讲述作为一名 ASP/VBScript 程序员,在使用 Visual Basic .NET 向 ASP .NET 迁移时可能会遇到的一些问题。有关所有语言变化的详尽列表,请参见 Visual Basic .NET 文档。
告别 Variant 数据类型
我们熟悉它、喜欢它,对它又爱又恨。当然,我说的是 VARIANT 数据类型。.NET 中没有 VARIANT,因此 Visual Basic .NET 不支持这种数据类型。这意味着,您的所有 ASP 变量将悄悄地由 VARIANT 类型更改为 Object 类型。根据需要,应用程序中使用的大量变量可以而且应该更改为相应的基元类型。如果您的变量实际上是 Visual Basic 中的 object 类型,则只需在 ASP .NET 中将其显式声明为 Object 类型。
Visual Basic Date 类型
值得特别注意的一种 VARIANT 类型是 VT_DATE,它在 Visual Basic 中以 Date 类型出现。在 Visual Basic 中,使用四个字节以 Double 格式存储 Date。在 Visual Basic .NET 中,Date 使用公共语言运行库 DateTime 类型,该类型使用八个字节整数表示。
由于 ASP 中的所有类型都是 VARIANT,对于所需的 Date 变量,将根据它们的使用方式进行编译并可以继续使用。但是,使用变量执行某些操作时,由于基本类型已发生变化,所以可能会遇到一些意想不到的问题。在将日期值作为长整型值传递给 COM 对象时,或使用 CLng 对日期类型执行某些计算时,需特别注意。
Option Explicit 现在是默认值
在 ASP 中,可以使用 Option Explicit 关键字,但它不是默认值。在 Visual Basic .NET 中,情况有所不同。Option Explicit 现在是默认值,因此,所有变量都需要声明。更严格地要求声明并将设置更改为 Option Strict 是一种比较明智的作法。这样做将迫使您将所有变量声明为特定的数据类型。乍看起来这是一项额外的工作,但实际上这是正确的做事方式。如果不这样做,您的代码将达不到最优状态,因为所有未声明的变量都将更改为 Object 类型。大多数隐式约定仍然有效,但如果将所有变量显式声明为所需类型,则能达到更好的效果,而且更安全。
不再支持 LET 和 SET
可以将一个对象直接赋值给另一对象,如 MyObj1 = MyObj2,而不再需要使用 SET 或 LET 语句。如果使用了这些语句,必须将其删除。
在方法调用中使用括号
在 ASP 中,您可以任意调用对象方法,而不必使用括号,如下所示:
Sub WriteData()
Response.Write "这是数据"
End Sub
WriteData
在 ASP .NET 中,所有调用都必须使用括号,即使是调用不带任何括号的方法。如下例所示编写代码,使其在 ASP 和 ASP .NET 中都可以正确运行。
Sub WriteData()
Response.Write("这是数据")
End Sub
Call WriteData()
ByVal 现在是默认值
在 Visual Basic 中,默认情况下,所有参数都通过引用或 ByRef 进行传递。在 Visual Basic .NET 中,情况有所不同。现在,默认情况下,所有参数都通过值或 ByVal 进行传递。如果仍要使用 ByRef,必须在参数前面显式使用 ByRef 关键字,如下所示:
Sub MyByRefSub (ByRef Value)
Value = 53;
End Sub
这一点必须特别注意。向 ASP .NET 迁移代码时,建议您仔细检查方法调用中使用的每个参数,确保这种变化是您真正需要的。我想您可能需要更改其中的某些参数。
不再有默认属性
在 Visual Basic .NET 中,不再存在默认属性的概念。这就意味着,如果您的 ASP 代码依赖于某个对象提供的默认属性,则需要更改为显式引用所需属性,如下列代码所示:
'ASP 语法(隐式检索 Column Value 属性)
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open("TestDB")
Set RS = Conn.Execute("Select * from Products")
Response.Write RS("Name")
'ASP.NET 语法(显示检索 Column Value 属性)
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- 迁移到 ASP .NET:需考虑的重要问题(2) 2008-02-23
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash
