惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

V
V2EX
C
Check Point Blog
博客园_首页
B
Blog
D
Docker
U
Unit 42
量子位
I
InfoQ
有赞技术团队
有赞技术团队
Martin Fowler
Martin Fowler
GbyAI
GbyAI
L
LangChain Blog
云风的 BLOG
云风的 BLOG
博客园 - Franky
美团技术团队
T
The Blog of Author Tim Ferriss
阮一峰的网络日志
阮一峰的网络日志
月光博客
月光博客
Vercel News
Vercel News
Recent Announcements
Recent Announcements
雷峰网
雷峰网
大猫的无限游戏
大猫的无限游戏
小众软件
小众软件
Google DeepMind News
Google DeepMind News

博客园 - 子原

快捷键 ucm命令 c语言编程规范和范例 XHTML DHTML SHTML到底是什么 xml入门精解之文件格式定义(dtd) XHTML和HTMl区别 硬编码和软编码 (低级语言 || 高级语言) && (编译 || 解释) RegisterStartupScript(key, script) and RegisterClientScriptBlock(key, script) Visual Studio .Net团队开发 使用Javascript和DOM Interfaces来处理HTML html代码元素列表说明及HTML标记参考手册 net CreateObject 方式无法直接拿到com组件的具体内容 HTML中的转义字符 ASP.NET1.0升级ASP.NET2.0的问题总结 学习ASP.NET步骤 跨服务器数据库查询 BCNF范式 DLL地狱
ASP.NET vs ASP—编译与解释的区别
子原 · 2007-07-09 · via 博客园 - 子原

ASP.NET在技术上没有叫做ASP 4.0,但从许多方面来讲,它就是ASP 4.0版本。我们可以从下面的两个例子看出.aspx文件与.asp文件的相似之处:

例程1ASPX页面示例

<!--File:test.aspx-->

<%@ Page  language=’C#’ %>

<script  runat=server>

int Add(int x, int y)

{

  return x+y;

}

</script>

<html>

<body>

<table border=1>

 <tr>

  <td>两数之和为:</td><td><%=Add(2,3)%></td>

 </tr>

</table>

</body>

</html>

例程2ASP页面示例

<!--File:test.asp-->

<%@  language=Jscript%>

<script  language=’JScript’  runat=server>

function  Add(x,y)

{

  return x+y;

}

  </script>

 <html>

<body>

<table border=1>

 <tr>

  <td>两数之和为:</td><td><%=Add(2,3)%></td>

 </tr>

</table>

</body>

</html>

以上两个例程的<html></html>里的代码是相同的,不同的是 <%%>声明使用的语言。两段代码都是在服务器端运行,但是,当访问这两个文件时,其背后所发生的事情却截然不同。我们先来分析test.asp文件的运行机制,当执行test.asp文件时,服务器对网页中的文本要进行线性解析,提取所有不是服务器端脚本的内容并作为响应返回,而网页中的服务器端脚本(我们在test.asp文件的脚本中加入了runat=server属性)首先要通过Jscript解释器来解析执行,执行结果作为响应返回。所以,.ASP文件的运行机制在几个方面影响了网页生成(也就是我们平时所说的程序运行)速度变慢。影响.ASP网页效率的几个方面是:首先,随机解释服务器端脚本比在服务器上执行预编译的代码效率更低,因此,要对ASP应用程序进行优化,比较通用的方法就是将大量的服务器端脚本移入预编译的COM组件中,这样就可以有效的提高网页的响应速度;第一的方面是,由于要不断地调用解释器,混合使用静态的HTML和服务器端求值语句脚本块比只用一个服务器端脚本块的效率更低,因此,为了提高应用程序的执行效率,有些ASP开发人员通常使用Response.Write()调用取代静态的HTML元素。最终导致了一个ASP页面上使用多种脚本语言来编写从而大大降低了应用程序的执行效率。现在,我们再来分析一下test.aspx文件的运行机制,在该例中使用c#语言来编写的脚本,所以在服务器端CLR使用相应的C#编译器把这些代码编译成一种叫做IL汇编语言并保存到程序集中。使用CLR,无论你使用何种语言(C#VB.NETJscript 等)编写的脚本,最终都被编译成IL汇编语言。
   程序集中既包括服务器端代码又包括静态HTML语句,因此,只要第一次访问了某个.ASPX页面,以后生成该页面时只需执行已编译好的代码即可。就是ASP.NET网页最终都被编译成.NET类(.NET框架中组件也叫做类),所以,在一个.aspx文件中不可能使用多种服务器端语言,这样就解决了传统的ASP脚本模型的所有有关效率低的问题。所以说,ASP.NETASP的升级版本。

与解释模型相比,使用编译模型还有其他方面的好处:1、在性能方面编译模型优于解释模型。因为,编译器将网页编译成类(组件),这样就可以用桌面应用程序或组件开发者使用的同样的调试工具进行调试。2、便于应用程序在编译时可以发现错误,这样就可以使应用程序的健壮性大大增强。3.NET应用程序开发者可以使用的所有工具,.aspx开发者同样可以使用。总而言之,从传统的ASP过度到ASP.NET,是在程序的性能、速度等方面的革命性的改进。