ASP与ASP.NET的区别

2013 年 6 月 30 日4930

ASP与ASP.NET的区别

作者:侯成文章来源:本站原创点击数:更新时间:2009-8-7

从一开始使用ASP,用户面临的问题就是:如果应用程序要有强大的功能,就需要编写大量的代码,所有的功能都必须用代码来实现。虽然使用一些小技巧可以实现代码的共享,但是仍然存在大量嵌入HTML的代码,难于管理。这还只是一个表面现象。

从更深的层次来研究ASP.NET,会发现ASP.NET与ASP之间的区别主要在于以下几个方面。

(1) 效率

ASP是一个脚本编程环境,只能用VBScript或者JavaScript这样的非模块化语言来编写。当ASP程序完成之后,在每次请求的时候解释执行。这就意味着它在使用其他语言编写的大量组件的时候会遇到困难,并且无法实现对操作系统的底层操作。由于它是解释执行的,所以速度和效率要远远低于编译执行的程序。而ASP.NET则是建立在.NET Framework之上的,它可以使用Visual Basic、C++这样的模块化程序设计语言,并且它在第一次执行时进行了编译,之后的执行不需要重新编译就可以直接运行,所以速度和效率比ASP会提高很多。

(2) 可重用性

在写ASP应用程序的时候,ASP代码和HTML混合在一起。只要有需要,就可以在任意的一个位置插入一段代码来实现特定的功能。这种方法表面上看起来很方便,但在实际的工作中会产生大量繁琐的页面,很难读懂,导致代码维护很困难。虽然可以使用include指令尽量让程序模块化,但是仍然不是一个最终彻底的解决方案。而ASP.NET则可以实现代码和内容的完全分离,使得前面提到的问题迎刃而解。

(3) 代码量

ASP需要对所有的要实现的功能通过编写代码来实现。例如,所有的ASP程序员都遇到过这样的情况:为了保证一个用户数据提交页面的友好性,当用户输入错误的时候会显示错误的位置,并尽量把用户原来的输入在控件中显示出来。这样的一个应用需要程序员编写大量的代码来实现。虽然它实在是一个非常简单的功能,但在其他的应用程序中根本不需要编写这么多的代码就可以实现。在ASP.NET中,程序员会发现只要预先说明,这样的功能ASP.NET就可以自动实现。所以相对来说,要实现同样的功能,使用ASP.NET比使用ASP的代码量要小得多。

……

ASP.NET的优点

通过上面对ASP缺点的介绍,我们可以很容易地理解ASP.NET已经解决了这些问题。事实的确如此,并且ASP.NET所提供的不仅仅是这些。要了解ASP.NET的所有特性,先让我们来看看设计ASP.NET的4个主要目标:

● 使代码更清晰

● 提高可部署性、可伸缩性、安全性以及可靠性

● 为不同的浏览器和设备提供更好的支持

● 支持一种全新的Web应用程序

但是作为用户,您不会直接使用这些新特性,因为Common Language Runtime (CLR)会处理其中的大多数特性。第2章会详细介绍这方面的内容,现在先看看ASP.NET的强大功能。

1. 多语言

ASP曾在脚本引擎方面受到了限制,特别是VBScript和JScript。而.NET Framework本质上就支持多语言,因此我们可以使用任何需要的语言。在默认情况下,Visual Basic .NET、C#和JScript .NET都附带了CLR(它们都是经过编译的),另外还可以使用许多第三方语言,例如Perl、COBOL等。此外,Visual Studio .NET增加了对Visual C++的支持和Java实现(称为 J# .NET)。由于多语言支持是.NET Framework的一部分,因此不论使用何种语言都没有关系。很明显,从用户的观点来看,保持某种程度上的兼容性可能是最好不过的(例如仅仅为了维护),但对于架构而言,语言的使用是没有任何限制的。

多语言支持的作用并不仅仅限于可使用什么语言,同时还在于如何使用这些语言。通过它可以用某种语言编写组件,而用另一种语言来使用(或重用)这些组件。比如用C#编写基于服务器的控件,然后在Visual Basic .NET中继承这些控件,接着在JScript .NET (或任何.NET支持的语言)中继续继承这些控件。

说明:

有关架构的详细介绍请参阅第2章,而第3章将详细介绍各种语言。

2. 服务器处理

如果您做过Visual Basic编程工作,就会发现要掌握新的ASP.NET 服务器控件是相当容易的,但如果以前仅使用过ASP,就会在学习ASP.NET 服务器控件的初始阶段出现一些混淆错误。不过即使这样也不用担心,因为它们是非常容易理解和使用的——它们只是和ASP有很大的不同。

使用ASP的一大问题在于页面简单地定义了一个大函数,该函数开始于页面的开头,结束于页面的末尾。不管页面的内容是纯HTML还是ASP生成的HTML,它都是按照页面顺序显示的。因此,逻辑代码依赖于它在页面中的位置,并且无法将HTML控件作为目标,除非将它们作为流的一部分进行显示。我们所做的任何工作都需要编写代码,包括HTML元素的输出。

而ASP.NET就解决了这个问题,方法是为控件引入一个声明的基于服务器的模型。这对ASP开发人员来说是一个截然不同的概念,因为控件在服务器上声明,可以在服务器上编程,也可以是客户端驱动的事件。这听起来确实不可思议,但使用起来很简单。为把一个普通的HTML控件变成一个服务器控件,只需将runat="server"作为一个特性添加到代码中。例如:

<input type="text" runat="server" >

这是一个标准的HTML控件,增加了runat特性后,就可以利用服务器端的代码对该控件进行编程了。例如,如果要将该控件置于一个窗体中,并且将该窗体提交回同一个页面中,就可以在服务器端代码中做以下修改:

Dim PersonFirstName As String

PersonFirstName = FirstName.Text

控件在服务器上运行,将允许我们使用ID特性来直接识别它。这样代码就具有更高的可读性,原因在于不必引用窗体的内容或者将这些内容复制到变量中。同时直接引用控件也就更加自然了,从而使页面的开发更加简单。如果您做过Visual Basic或VBA编程工作,对这些概念就不会太陌生。

但是如果您以前只用ASP编写过脚本,理解上述内容就比较吃力,不过这仅仅是因为ASP.NET用不同的方式处理往返于浏览器的页面内容。如果您了解数据库访问技术,就应该使用过对象、调用方法以及设置过属性,而这些与ASP.NET服务器控件并无多大差别。

说明:

第4章将介绍新的服务器处理结构。

3. Web Form控件

将现有的HTML控件转换为服务器端的控件是比较容易的,不过这种方法仍然存在几个问题:

● 一致性:我们仍然不得不接受一些HTML控件的非常不直观的固有特征。例如,有没有一个INPUT标记符用于单行文本项?有没有一个TEXTAREA标识符用于多行文本项?指定行和列的单个控件真的更有意义吗?

● 用户经验:如何轻松地编写站点,向诸如IE这样的浏览器传送丰富的内容,同时保留对低级别浏览器的兼容性呢?HTML是无法根据浏览器改变其内容的,而要达到这个目的,必须编写代码。

● 设备:如何编写站点来应付除浏览器之外的其他设备呢?如今像WAP手机、PDA甚至电冰箱这样的设备都有浏览器。与浏览器问题一样,都必须为其手工编写代码。

为了解决这些问题,Microsoft公司创建了一组服务器控件,它们都用asp:前缀标识。ASP.NET服务器控件通过以下方式来处理上述问题:

● 提供一致的命名标准。例如,所有文本输入栏都由TextBox控件处理。对于不同的模式(如多行文本、密码等),只需指定相应的特性即可。

● 提供一致的属性。所有的服务器控件使用一组一致的属性,这样更便于记忆。例如,TextBox控件中的Text栏比Value栏更加直观。

● 提供一致的事件模型。传统的ASP页面通常有大量用于处理数据传送的代码,特别是当一个页面提供多行命令时,就更是如此。而利用ASP.NET,我们可以为事件过程封装控件,从而给服务器端代码提供更多的结构。

● 发送纯HTML或者HTML与客户端JavaScript。通过一个小异常(这是故意的),服务器控件在默认状态下会发送HTML 3.2,提供很高的跨浏览器兼容性。对其进行修改,使之在默认状态下指向像IE这样的高级浏览器,这样控件就会发送HTML 4.0和DHTML,提供更丰富的界面。此时用户只能看到HTML内容,而看不到服务器控件。

● 发送设备指定的代码。当一个浏览器发出请求时,某个控件会发送HTML,而当WAP手机发出请求时,该控件就会发送WML。该控件还会检测设备并生成正确的标记。

文章录入:侯成责任编辑:侯成

上一篇文章: 没有了
下一篇文章: 没有了

0 0