什么是 ASP/ASP+/ASP.NET

来源:百度文库 编辑:神马文学网 时间:2024/04/23 16:50:05
什么是 ASP?
ASP 是一种使嵌入网页中的脚本可由因特网服务器执行的服务器端脚本技术。
ASP 是一项微软公司的技术
ASP 指 Active Server Pages(动态服务器页面)
ASP 是运行于 IIS 之中的程序
IIS 指 Internet Information Services(因特网信息服务)
IIS 是 Windows 2000 捆绑的免费组件
IIS同时也是 Windows NT 4.0 的可选组件
此可选组件可通过因特网下载
PWS 的体积更小 - 不过拥有 IIS 的完整功能
PWS 可在 Windows 95/98 的安装 CD 中找到
ASP 文件是什么?
ASP 文件和 HTML文件类似
ASP 文件可包含文本、HTML、XML 和脚本
ASP 文件中的脚本可在服务器上执行。
ASP 文件的扩展名是 ".asp"
它如何工作?
当浏览器请求某个 HTML 文件时,服务器会返回这个文件
而当浏览器请求某个 ASP 文件时,IIS 将这个请求传递至 ASP 引擎
ASP 引擎会逐行地读取这个文件,并执行文件中的脚本
最后,ASP 文件将以纯 HTML 的形式返回到浏览器
在您继续学习 ASP .NET 之前,拥有对微软 ASP 技术的基本了解释有帮助的。
如需学习更多 ASP,请访问我们的《ASP 教程》。
什么是 ASP+?
ASP+ 等同于 ASP.NET。
ASP+ 是微软研发 ASP.NET 期间所使用的早期名称。
什么是 ASP.NET?
ASP 3.0 是 ASP 的最新版本,但不会再有 ASP 4.0 版本了。
ASP.NET 是下一代的 ASP,但是不能把 ASP.NET 称为 ASP 的升级版本。ASP.NET 是全新的服务器端 ASP 脚本。
ASP.NET 是 .NET 框架的组成部分。微软耗时三年从底层重写了 ASP.NET,而 ASP.NET 无法完全向后兼容 ASP 3.0。
您会在本教程的下一节了解到 ASP 与 ASP.NET 之间的差异所在。
.NET 框架(.NET Framework)
.NET 框架是微软 .NET 平台的基础结构。
.NET 框架是构建、开发及运行 Web 应用程序和 Web 服务的一种环境。
.NET 框架含有公共语言运行库和公共类库 - 比如 ADO.NET、ASP.NET 以及 Windows 窗体 - 来提供可整合入各种计算机系统的高级标准服务。
.NET 框架可提供特性丰富的应用程序环境、简化的开发以及众多开发语言之间的轻松整合。
.NET 框架中立于语言。目前,它支持 C++、C#、Visual Basic 以及 JScript(微软的 JavaScript 版本)。
微软的 Visual Studio.NET 是针对 NET Framework 的公共开发环境。
ASP 与 ASP.NET 之间的差异
Previous Page
Next Page
ASP.NET 拥有更好的语言支持,一整套新的控件,基于 XML 的组件,以及更好的用户身份验证。
ASP.NET 通过允许编译的代码,提供了更强的性能。
ASP.NET 代码不完全向后兼容 ASP。
ASP.NET 的新特性
更好的语言支持
可编程的控件
事件驱动的编程
基于 XML 的组件
用户身份验证,带有帐号和角色
更高的可伸缩性
更强的性能 - 编译代码
更容易配置和开发
不完全的 ASP 兼容
语言支持
ASP.NET 使用新的 ADO.NET。
ASP.NET 支持完整的 Visual Basic,而非 VBScript。
ASP.NET 支持 C# (C sharp) 和 C++。
ASP.NET 支持 JScript,和以前一样。
ASP.NET 控件
ASP.NET 包含大量 HTML 控件。几乎所有页面中的 HTML 元素都能被定义为 ASP.NET 控件,而这些控件都能由脚本控制。
ASP.NET 同时包含一系列新的面向对象的输入控件,比如可编程的列表框和验证控件。
新的 data grid 控件支持分类、数据分页,以及您对一个数据集控件所期待的一切。
事件驱动的控件
所有 Web 页面上的 ASP.NET 对象都能够发生可被 ASP.NET 代码处理的事件。
可由代码处理的加载、点击和更改事件使得编程更轻松,更有条理。
ASP.NET 组件
ASP.NET 组件深入地基于 XML。比如新的 AD Rotator,它使用 XML 来存储广告信息和配置。
用户身份验证
ASP.NET 支持基于表单的用户身份验证,包括 cookie 管理和自动的非授权登录重定向。
(您仍然能够定制自己的登陆页面和用户验证程序)。
User 帐户和角色
ASP.NET 允许用户帐户和角色,赋予每个用户(带有一个给定的角色)不同的服务器代码访问权限。
高可伸缩性
ASP.NET 在提供更大的可伸缩性方面已有非常多的改善。
服务器对服务器的通信已得到极大的增强,这使得在若干个服务器上按比例分配一个应用程序成为可能。关于这一点的一个例子是,我们有能力在不同的服务器上运行 XML 解析器、XSL 转换,甚至耗费资源的 session 对象。
编译代码
对服务器上 ASP.NET 页面的第一个请求是编译其 ASP.NET 代码,并在内存中保存一份缓存的备份。这样做的结果当然极大地提高了性能。
易于配置
通过纯文本文件就可完成对 ASP.NET 的配置。
配置文件可在应用程序运行时进行上传和修改。无需重起服务器。也没有 metabase 和注册方面的难题。
易于开发
不需要重起服务器来配置和替换已编译的代码。ASP.NET 会简单地把所有新的请求重定向到新的代码。
兼容性
ASP.NET 不完全兼容早期的 ASP 版本,所有大部分旧的 ASP 代码需要进行修改才能在 ASP.NET 下运行。
为了解决这个问题,ASP.NET 使用了一个新的文件后缀 ".aspx"。这样就使 ASP.NET 应用程序与 ASP 应用程序能够一起运行在同一个服务器上。
ASP.NET - Web 页面
Previous Page
Next Page
一个简单的 ASP.NET 页面看上去类似一张普通的 HTML 页面。
Hello W3School
为了开始我们的 ASP.NET 学习之旅,首先我们将构造一张简单的 HTML 页面,这张页面将在浏览器中显示 "Hello W3School":

用 HTML 编写的 Hello W3School
这张 HTML 页面的 HTML 代码:

Hello W3School!

如果您希望亲自试一试,可以把这些代码保存在名为 "firstpage.html" 的文件中,然后创建一个到此文件的链接,就像这样:firstpage.html。
用 ASP.NET 编写的 Hello W3School
把 HTML 页面转换为 ASP.NET 的最简单的方法是,把这个 HTML 文件拷贝为带有 .aspx 后缀的新文件。
这些将把我们的例子显示为一个 ASP.NET 页面:

Hello W3School!

如果您希望亲自试一试,请把这些代码保存在一个名为 "firstpage.aspx" 的文件中,并创建一个到此文件的链接:firstpage.aspx。
它如何工作?
从根本上讲,ASP.NET 页面与 HTML 完全相同。
HTML 页面的扩展名是 .htm 或 .html。假如浏览器从服务器请求某张 HTML 页面,服务器不进行任何修改,就会把该页面发往浏览器。
ASP.NET 页面的扩展名是 .aspx。如果浏览器请求某张 ASP.NET 页面,那么在把结果发回浏览器之前,服务器首先会处理页面中的可执行代码。
上面的 ASP.NET 页面不包含任何可执行的代码,因此也不会执行任何代码。在下面的例子中,我们将向页面添加一些可执行代码,以便向您演示静态 HTML 页面与动态 ASP 页面的不同之处。
经典的 ASP
Active Server Pages (ASP) 已经流行很多年了。通过 ASP,可以把可执行代码放置于 HTML 页面内部。
ASP.NET 之前的 ASP 版本经常被称为经典 ASP(Classic ASP)。
ASP.NET 不完全兼容 Classic ASP,但是通过少量的修改,Classic ASP 可以良好地作为 ASP.NET 进行工作。
如果您希望学习更多有关 Classic ASP 的知识,请访问我们的 ASP 教程。
用 Classic ASP 编写的动态页面
为了向您演示如何使用动态内容显示页面,我们向上面的例子添加了一些可执行代码:

Hello W3School!

<%Response.Write(now())%>

<% --%> 标签内的代码在服务器上执行。
Response.Write 是 ASP 代码,用来向 HTML 输出流文本。
Now() 是一个可返回服务器当前日期和时间的函数。
如果您希望亲自试一试,可以把这些代码保存在名为 "dynpage.asp" 的文件中,并创建一个指向该文件的链接:dynpage.asp。
用 ASP .NET 编写的动态页面
下面的代码可把我们的例子显示为一个 ASP.NET 页面:

Hello W3School!

<%Response.Write(now())%>

如果您希望亲自试一试,请把这些代码保存在名为 "dynpage.aspx" 的文件中,然后创建到此文件的链接:dynpage.aspx。
ASP.NET vs Classic ASP
上面的例子无法展示出 ASP.NET 与 Classic ASP 之间的不同之处。
正如您在最后的两个例子中看到的,在这个两个 ASP 和 ASP.NET 页面之间,没有什么不同之处。
在下面的章节,您会看到,服务器控件如何使 ASP.NET 比 Classic ASP 更加强大。
服务器控件是服务器可以理解的标签。
Classic ASP 的局限性
下面列出的代码是从上一节中拷贝的:

Hello W3School!

<%Response.Write(now())%>

上面的代码能够反映出 Classic ASP 的局限性:代码块必须放置在需要进行输出的位置。
通过 Classic ASP,我们是无法将可执行代码与 HTML 本身进行分离的。这使得页面难以阅读,也难以维护。
ASP.NET - 服务器控件
通过服务器控件,ASP.NET 已经解决了上面所描述的“意大利面条式代码”的问题。
服务器控件是可被服务器理解的标签。
有三种类型的服务器控件:
HTML 服务器控件 - 传统的 HTML 标签
Web 服务器控件 - 新的 ASP.NET 标签
Validation 服务器控件 - 用于输入验证
ASP.NET - HTML 服务器控件
HTML 服务器控件是服务器可理解的 HTML 标签。
ASP.NET 中的 HTML 元素是作为文本来进行处理的。要想使这些元素可编程,就需要向这些 HTML 元素添加runat="server" 属性。该属性指示,此元素是一个服务器控件。同时要添加 id 属性来标识该服务器控件。id 引用可用于操作运行时的服务器控件。
注释:所有 HTML 服务器控件必须位于带有 runat="server" 属性的
标签内。runat="server" 属性指示该表单应在服务器进行处理。它同时指示其包括在内的控件可被服务器脚本访问。
在下面的例子中,我们在 .aspx 文件中声明了一个 HtmlAnchor 服务器控件。然后我们在一个事件句柄中操作该 HtmlAnchor 控件的 HRef 属性。Page_Load 事件是众多 ASP.NET 可理解的事件中的一种类型:
注释:事件句柄(event handler)是一种针对给定事件执行代码的子例程。
Visit W3School!
提示:可执行代码本身已被移到 HTML 之外了。
ASP.NET - Web 服务器控件
Web 服务器控件是服务器可理解的特殊 ASP.NET 标签。
类似 HTML 服务器控件,Web 服务器控件也在服务器上创建,它们同样需要 runat="server" 属性以使其生效。不过,Web 服务器控件没有必要映射任何已存在的 HTML 元素,它们代表更复杂的元素。
创建 Web 服务器控件的语法是:
在下面的例子中,我们在 .aspx 文件中的声明了一个 Button 服务器控件。然后我们为 Click 事件创建了一个事件句柄,它可修改按钮上的文本:

ASP.NET - Validation 服务器控件
Validation 服务器控件用于验证用户输入。如果用户输入没有通过验证,将给用户显示一条错误消息。
每种 validation 控件执行一种特定的验证类型(比如验证某个具体的值或者某个范围的值)。
默认地,当点击 Button, ImageButton 或 LinkButton 时,页面验证才会被执行。您可通过把 CausesValidation 属性设置为 false,来阻止某个按钮控件被点击时进行验证。
创建 Validation 服务器控件的语法是:
在下面的例子中,我们在 .aspx 文件中声明了一个 TextBox 控件,一个 Button 控件,以及一个 RangeValidator 控件。如果验证失败,文本 "The value must be from 1 to 100!" 将显示在 RangeValidator 控件中:

Enter a number from 1 to 100:

TIY
事件句柄(event handler)是一种针对给定事件来执行代码的子例程。
ASP.NET - 事件句柄
请看下面的代码:
<%lbl1.Text="The date and time is " & now()%>

上面的代码什么时候会被执行?答案是:“我不知道. . .”
Page_Load 事件
Page_Load 事件是众多 ASP.NET 可理解的事件之一。Page_Load 事件会在页面加载时被触发,然后 ASP.NET 会自动调用子例程 Page_Load,并执行其中的代码:

注释:该 Page_Load 事件不包含对象引用或事件参数!
TIY
Page.IsPostBack 属性
Page_Load 子例程会在页面每次加载时运行。如果您仅希望在页面第一次加载时执行 Page_Load 子例程中的代码,您可以使用 Page.IsPostBack 属性。如果 Page.IsPostBack 属性为 false,则页面第一次被载入,如果为 true,则页面传回服务器(例如,通过点击表单上的按钮):

上面的例子仅在页面初次加载时创建 "The date and time is...." 这条消息。当用户点击 Submit 按钮时,submit 子例程将在第二个 label 创建 "Hello World!",但第一个 label 中的日期和时间不会改变。
TIY