转至繁体中文版     | 网站首页 | 图文教程 | 资源下载 | 站长博客 | 图片素材 | 武汉seo | 武汉网站优化 | 
最新公告:     敏韬网|教学资源学习资料永久免费分享站!  [mintao  2008年9月2日]        
您现在的位置: 学习笔记 >> 图文教程 >> 站长学院 >> Web开发 >> 正文
ASP.NET vs ASP——编译与解释的区别         ★★★★

ASP.NET vs ASP——编译与解释的区别

作者:闵涛 文章来源:闵涛的学习笔记 点击数:1680 更新时间:2009/4/23 10:48:55

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页面示例

<!--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>

例程2:ASP页面示例

<!--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.NET、Jscript 等)编写的脚本,最终都被编译成IL汇编语言。程序集的生成过程如下图所示:

   

由上图可以看出,程序集中既包括服务器端代码又包括静态HTML语句,因此,只要第一次访问了某个.ASPX页面,以后生成该页面时只需执行已编译好的代码即可。就是ASP.NET网页最终都被编译成.NET类(.NET框架中组件也叫做类),所以,在一个.aspx文件中不可能使用多种服务器端语言,这样就解决了传统的ASP脚本模型的所有有关效率低的问题。所以说,ASP.NET是ASP的升级版本。

与解释模型相比,使用编译模型还有其他方面的好

[1] [2]  下一页


[C语言系列]NET 中C#的switch语句的语法  [Web开发]VS2005+SQL2005之.NET2.0数据库连接
[Web开发]VS2008和.NET3.5Beta2新特性(介绍及下载地址)  [Web开发]通过VS2005如何发布网站
[Web开发]VS2005安装了SP1后发布项目存在的问题之解决方案  [Web开发]VS2005如何建立(新建)网站项目
[Web开发]图文解说—如何通过VS2005测试网站程序性能  [系统软件]托拽Explore中的文件到VB.net的窗口
[系统软件]Boost库在XP+Visual C++.net中的安装  [系统软件]M$ Expression VS MM Studio
教程录入:mintao    责任编辑:mintao 
  • 上一篇教程:

  • 下一篇教程:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
      注:本站部分文章源于互联网,版权归原作者所有!如有侵权,请原作者与本站联系,本站将立即删除! 本站文章除特别注明外均可转载,但需注明出处! [MinTao学以致用网]
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)

    同类栏目
    · Web开发  · 网页制作
    · 平面设计  · 网站运营
    · 网站推广  · 搜索优化
    · 建站心得  · 站长故事
    · 互联动态
    更多内容
    热门推荐 更多内容
  • 没有教程
  • 赞助链接
    更多内容
    闵涛博文 更多关于武汉SEO的内容
    500 - 内部服务器错误。

    500 - 内部服务器错误。

    您查找的资源存在问题,因而无法显示。

    | 设为首页 |加入收藏 | 联系站长 | 友情链接 | 版权申明 | 广告服务
    MinTao学以致用网

    Copyright @ 2007-2012 敏韬网(敏而好学,文韬武略--MinTao.Net)(学习笔记) Inc All Rights Reserved.
    闵涛 投放广告、内容合作请Q我! E_mail:admin@mintao.net(欢迎提供学习资源)

    站长:MinTao ICP备案号:鄂ICP备11006601号-18

    闵涛站盟:医药大全-武穴网A打造BCD……
    咸宁网络警察报警平台