ASP.NET与ASP的区别(2)

2017 年 6 月 12 日2070

1.6.2 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。该控件还会检测设备并生成正确的标记。

陈刚

本文来源:清华大学出版社

责任编辑:王晓易_NE0011

0 0