
第一部分 ASP.NET Web程序设计
第1章 ASP.NET Web程序设计(相关知识体系系统学习)
1.1 ASP.NET开发必备
ASP.NET是一项功能强大、非常灵活的新技术,它用于编写动态Web页面,是Microsoft公司的ASP和.NET Framework这两项核心技术的结合。ASP(常称为经典的ASP)在Web计算方面所提供的用于创建动态Web页面的强健、快速、有效的方法已经有7年以上的历史;.NET Framework则是一整套的新技术,Microsoft公司推出此技术的目的是改革未来在所有编程开发中所采用的方法,以及各公司从事业务活动的方法。因此,ASP.NET是利用.NET Framework提供的新功能来创建动态Web页面的一种方法。
1.1.1 客户端/服务器工作模式
什么是客户端/服务器(Client/Server)?
在了解ASP.NET之前,我们先来了解Client及Server间的关系。在计算机的世界里,凡是提供服务的一方我们称为服务器(Server),而接受服务的另一方我们称为客户端(Client)。我们最常接触到的例子是局域网络里的文件服务器所提供的文件存储服务:提供文件存储的计算机,我们可以说它是服务器;而使用访问服务器的另一方,我们则称作客户端。但是谁是客户端谁是服务器也不是绝对的,如果提供服务的服务器要使用其他机器所提供的服务,则这个服务器便转变为客户端(如图1-1所示)。
不过,客户端及服务器的关系不一定建立在两台分开的机器上,同一台机器中也存在这种主从关系。提供服务的服务器及接受服务的客户端也有可能都在同一台机器上,例如我们在提供网页的服务器上通过浏览器执行浏览本机所提供的网页,这样在一台机器上就同时扮演服务器与客户端的角色。
当用户浏览网站时,用户充当客户端的角色,向服务器发出请求(Request),服务器收到请求后,对请求进行响应(Response),将用户请求的内容以HTML格式返回给用户,在客户端呈现。

图1-1 客户端/服务器模型
1.1.2 网页的分类
1.静态网页
所谓静态网页,就是网页里面没有程序代码,不会被服务器执行。这种网页通常在服务器以扩展名.htm或.html存储,表示里面的内容是以HTML语言编写的。
HTML语言是由许多叫做标注(Tag)的元素组成的。这种语言指示了文字、图形等元素在浏览器上面的配置、样式以及这些元素实际上是存放于因特网上的哪个地方(地址),或点选了某段文字或图形后,应该要连接到哪一个网址。我们在浏览这种扩展名为.htm的网页的时候,网站服务器不用执行任何程序就会把档案传给客户端的浏览器直接进行解读。所以除非网站设计师更新网页档案的内容,否则网页的内容是不会因为执行程序而出现不同内容的。
2.动态网页
(1)客户端的动态Web页面
在客户端模型中,附加到浏览器上的模块(插件)完成创建动态页面的全部工作。HTML代码通常随包含一套指令的单独文件传送到浏览器,该文件在HTML页面中引用。但是,常见的另一种情况是这些指令与HTML代码混合在一起。当用户请求Web页面时,浏览器利用这些指令为页面生成纯HTML,也就是说,页面根据请求动态生成,这样就生成了一个要返回到浏览器上的HTML页面。
因此,在客户端模型中,生成Web页面有以下六个步骤,如图1-2所示。
①Web作者编写一套用于创建HTML的指令,并将它保存到.htm文件中。作者也可以用其他语言编写一套指令,这些指令可以包含在.htm文件中,或放在单独的文件中。
②过一段时间后,有用户在其浏览器中输入了请求Web页面,该请求就从浏览器传送到Web服务器。
③Web服务器确定HTML页面的位置,也许还需要确定包含指令的第二个文件的位置。
④Web服务器将新创建的HTML流与指令通过网络传回浏览器。
⑤位于浏览器的模块会处理指令,并将Web页面的指令以HTML形式返回——只返回一个页面,即使有两个请求也是如此。
⑥浏览器处理HTML,并显示该页面。
客户端技术近来已不再受欢迎,因为此项技术需要较长的页面下载时间,特别是当需要下载多个文件时,下载时间就更长。客户端技术的第二个缺点是每一个浏览器以不同的方式解释客户端脚本代码,因此无法保证所有的浏览器以相同的方式解释和执行这些指令。客户端技术的第三个缺点是当编写使用服务器资源(如数据库)的客户端代码时会出现问题,这是因为代码是在客户端解释的,而客户端脚本代码并不安全,很容易通过浏览器中的View | Source选项来访问,这不是我们所希望的。

图1-2 浏览器处理HTML模型
(2)服务器的动态Web页面
利用服务器模型,HTML源代码与另外一套指令被传回到Web服务器(可以混合在一起传送,也可以分开传送)。当用户请求页面时,再使用这套指令给页面生成HTML,页面便会根据请求动态生成。在服务器模型中,生成Web页面有以下六个步骤,如图1-3所示。
①Web作者编写一套用于创建HTML的指令,并将这些指令保存到文件中。
②有用户在其浏览器中输入请求Web页面,该请求就从浏览器传送到Web服务器。
③Web服务器确定指令文件的位置。
④Web服务器根据指令创建HTML流。
⑤Web服务器将新创建的HTML流通过网络传回浏览器。
⑥浏览器处理HTML,并显示Web页面。

图1-3 浏览器处理HTML模型
这次与前面介绍方法的不同之处是处理指令的位置。在页面返回到浏览器之前,所有处理工作都在服务器上完成。与客户端模型相比,此方法的主要优点是只有HTML代码传回浏览器,这意味着页面的初始逻辑隐藏在服务器中,而且可以保证大多数浏览器能够显示该页面。
注意:ASP.NET在服务器进行其处理工作。
客户端和服务器技术都没有在静态Web页面的正常处理中增加太多的复杂性(客户端技术的步骤⑤或服务器技术的步骤④),但有一步是至关重要的,即对于动态页面技术而言,直到请求Web页面之后,才生成定义Web页面的HTML。例如,可以用处理动态Web页面的任何一种方法编写一套指令,来创建显示当前时间的页面,代码如下所示:
<html> <head> <title>The Punctual Web Server</title> </head> <body> <h1>Welcome</h1> In Webserverland, the time is exactly <INSTRUCTION: write HTML to display the current time> </body> </html>
利用这种方法,可以通过纯HTML代码构成大多数的Web页面,只是不能硬编码当前时间,而是编写一段特殊代码(替换上面突出显示的代码行),当用户请求页面时,这些代码可以指示Web服务器通过客户端技术中的步骤⑤或服务器技术中的步骤④来生成对应的HTML。本章的后面部分还将用到此示例,并介绍如何用ASP.NET编写此处的代码。
服务器技术组件安装在Web服务器上,故页面运行在服务器上。而在客户端技术中,Web页面运行在浏览器上。因此,在把服务器脚本发送回浏览器之前,Web服务器必须先把它们转换为HTML;浏览器不理解服务器代码,也就不能处理它们。