XuGang

记录一个程序员的成长

 

ASP(从前) vs ASP.NET(之后)

                     ASP(从前) vs ASP.NET(之后)
前奏
回顾ASP的历史:

在没有ASP的时代,人们对静态页面不满足。便出现了CGI(Common Gateway Interface,通用网关接口)ISAPI(Internet Server Application Program Interface,互联网服务器应用程序接口)来编写动态页面。用Perl或者VC进行编写,HTML标识嵌入代码中,维护相当困难……

这个时候,ASP出现了……它能够将代码直接嵌入HTML中,还能够通过内置的组件(如ADO:ActiveX Data Objects)实现强大的功能。它的出现给网站开发带来一阵狂潮……

(1)ASP 1.0:作为IIS的附属产品免费发送的,它的外部的组件需要实例化。

(2)ASP 2.0:它和IIS 4.0结合就有可能建立ASP应用,每个组件都有自己单独的内存空间,内置的MTS(Microsoft Transaction Server)也使得制作组件变得简单。

(3)ASP 3.0:随着Windows 2000和IIS 5.0一起到来。它不是简单的对ASP的扩充,在核心上作了相当大的改进,把很多事情交给了COM(Component Object Model,组件对象模型)来做。微软结合MTS与COM核心环境做出了COM+,这便让主机用一种新的方法来使用组件。

再后来,ASP.NET出现了,它并不是ASP的简单升级……

正文
<1> ASP vs ASP.NET语言

ASP只接受VBScript,JavaScript为程序语言。它无法进行像传统编程语言那样的底层操作,只能借助C++、VB、JAVA等别的语言编写的组件。
ASP.NET 支持任何一种可以编译成MSIL(Microsoft Intermediate Language)的程序语言,凡是符合CLR(Common Language Library)规范的语言都可以编写ASP.NET。目前最主要的有3种:
(1)VB.NET:取代了功能较弱的VB Script,由VB6改进而来;
(2)C#:由C++语言改编而来;
(3) JScript: 由JavaScript改进而来;
(J#在我还没有用,它就在VS2005中夭折,我不知所云 ^_^)

附加:
MSIL是一种中介语言,介于高级语言(如VB)和机器码之间的语言,在ASP.NET下面,我们撰写的程序语言会先编译成MSIL,然后MSIL再被编译成机器码加以执行。过程如图1:

 

MSIL程序非常接近机器码,从MSIL编译成为机器码加以执行的速度非常快,而介于MSIL与机器码之间的编译器称为JIT(just in time)编译器,通过不同机器的JIT编译器,MSIL可以及时地被编译成为不同的机器码,然后在不同的机器中执行。如图2:
 


由于不论用何种语言开发ASP.NET,所开发的组件都会编译成为MSIL,因此不管网页开发者使用的是哪一种程序语言,都可以使用这些组件,这样就达到了共享资源、节省成本的目的。

<2> ASP vs ASP.NET 语法

在ASP中,Request、Request.QueryString和Request.Form返回的集合均为字符串数组类型;
在ASP.NET中,Request、Request.QueryString和Request.Form返回的集合均为字符串类型;

<3> ASP vs ASP.NET 语义
(1)
ASP允许在单页面中使用多种语言开发,这对脚本库方案很有用;
ASP.NET在单页面中仅支持单语言开发(因为ASP.NET需要编译才能运行),但在同一个项目中允许使用不同的语言。(使用用户控件可以实现在单页面内集成不同语言)
(2)
ASP中声明的函数在“<%   %>”标记中,并支持页面的呈现函数,如:<%=Now %>;
ASP.NET中声明的函数必须在“<script runat=server></script>” 标记中,并且ASP.NET不支持页面的呈现函数;

<4> ASP vs ASP.NET执行

ASP是解释执行的。当ASP网页(以.asp为后缀名)被浏览时,IIS会启动asp.dll来执行。
ASP.NET是编译执行的,它是运行服务器上编译好的CLR代码。而ASP.NET网页(以.aspx为后缀名)被浏览时,IIS则会启动W3wp.exe (或是aspnet_wp.exe ,或是xspwp.exe)来执行。

因为两者的执行文件不同,因此安装ASP.NET之后,不但不影响已有ASP网页的运作,而且ASP网页及ASP.NET网页可以共存于一个网站。

<5> ASP vs ASP.NET效率

相对于ASP的执行过程,ASP.NET的执行过程多了一次编译过程,因而在ASP.NET网页第一次被执行时会比ASP慢一些,但第一次被浏览后,MSIL会被储存下来,所以当同一网页第二次被浏览时,只需要花费从MSIL编译到机器码然后执行的时间,结果会比ASP快很多。比较如下:

ASP.NET网页第二次被浏览所用时间〈 ASP网页所用时间〈 ASP.NET网页第一次被浏览所用时间

<6> ASP vs ASP.NET接口

在.NET Framework发布之前:
(1)ASP是以asp.dll所提供的对象为接口;( asp.dll提供了Application、Session、Request、Response、Server 等很有限的对象,通过这些对象,ASP程序才得以获取表单数据、读取系统信息、输出到浏览器、引用ActiveX对象等。)

(2)应用程序是以Win32 API及COM对象为接口;

在.NET Framework发布之后:
不管是ASP.NET或是应用程序都是以.NET Framework所提供的类库为接口。
见图3:
 

到了ASP.NET 以后,原来的asp.dll所提供的对象全部转移成为.NET Framework类库的一小部分。而.NET Framework 类库所提供的类多达数百种,可以说应有尽有。ASP.NET网页开发却可以像Windows程序一样,使用功能异常强大的.NET Framework类库,网页开发变得便利无比。

要查看提供了哪些类,可打开.NET Framework SDK文件,找到 .NET Framework Reference,那儿列出了所有的类及其使用说明。

请大虾们指点江山,鄙人洗耳恭听、查漏补缺。^_^

 

posted on 2007-10-29 15:16  钢钢  阅读(3011)  评论(2编辑  收藏  举报

导航