** ASP.NET vs ASP **
——编译与解释的区别
2000 年 6 月 Microsoft 公司发布 .NET 计划以来,使编程工作在业界中引起了一次划时代的革命。 ASP.NET 是 .NET 计划中的一个重要组成部分,其为 Web 应用程序开发人员提供了许多新特性,这些特性包括已编译的服务器端代码、一种将服务器端逻辑与客户端布局相分离的代码隐藏( code-behind )技术、可扩展的服务器端控件模型、设计数据绑定模型、 xcopy 部署以及客户和服务器上的窗体身份证验证支持等。
ASP.NET 作为一种先进的 Web 应用程序开发技术,相对于 ASP 具有革命性的进步。其使用编译后的语言(包括元数据、 IL 等资源),这是 .aspx 文件运行性能大大提升的一个主要原因,也是 ASP.NET 不同于以往的 ASP 的显著地方。 ASP.NET 第一次装载页面的速度较慢,但以后加载该页面的速度是 ASP 不能比拟的,其速度飞快。这是因为 ASP.NET 在第一次访问网页时所需要开销有:加载 ASP.NET 工作者进程,对 .aspx 文件进行语法分析并将其编译成一个可执行的程序集。这一点与 ASP 引擎执行服务器代码是不同的,因为 ASP 总是每次执行时都是将服务器代码交给 Jscript 或 VBScript 解释器来进行解析。
ASP.NET 在技术上没有叫做 ASP 4.0 ,但从许多方面来讲,它就是 ASP 4.0 版本。我们可以从下面的两个例子看出 .aspx 文件与 .asp 文件的相似之处:
例程 1 : ASPX 页面示例
1@ Page language=’C#’
1<script runat="server">
2
3int Add(int x, int y)
4
5{
6
7return x+y;
8
9}
10
11</script>
1<html>
2<body>
3<table border="1">
4<tr>
5<td> 两数之和为: </td><td>```
6=Add(2,3)
7```</td>
8</tr>
9</table>
10</body>
11</html>
例程 2 : ASP 页面示例
1@ language=Jscript
1<script language="’JScript’" runat="server">
2
3function Add(x,y)
4
5{
6
7return x+y;
8
9}
10
11</script>
1<html>
2<body>
3<table border="1">
4<tr>
5<td> 两数之和为: </td><td>```
6=Add(2,3)
7```</td>
8</tr>
9</table>
10</body>
11</html>
以上两个例程的
1<html></html>
里的代码是相同的,不同的是 ```
1
2
3
4由上图可以看出,程序集中既包括服务器端代码又包括静态 HTML 语句,因此,只要第一次访问了某个 .ASPX 页面,以后生成该页面时只需执行已编译好的代码即可。就是 ASP.NET 网页最终都被编译成 .NET 类( .NET 框架中组件也叫做类),所以,在一个 .aspx 文件中不可能使用多种服务器端语言,这样就解决了传统的 ASP 脚本模型的所有有关效率低的问题。所以说, ASP.NET 是 ASP 的升级版本。
5
6与解释模型相比,使用编译模型还有其他方面的好处: 1 、在性能方面编译模型优于解释模型。因为,编译器将网页编译成类(组件),这样就可以用桌面应用程序或组件开发者使用的同样的调试工具进行调试。 2 、便于应用程序在编译时可以发现错误,这样就可以使应用程序的健壮性大大增强。 3 、 .NET 应用程序开发者可以使用的所有工具, .aspx 开发者同样可以使用。总而言之,从传统的 ASP 过度到 ASP.NET ,是在程序的性能、速度等方面的革命性的改进。