第七章大型网站设计——服务器端动态主页设计通过前面各章的介绍,相信大家已经对网页设计已经有一个完整的认识了。对于建立一个个人或者小型网站来说,利用前面给大家介绍的各种技术和工具就已经能够建立一个图文并茂,动态十足的网站了。但是,对于一个大型或者商业网站来说,这些技术只能够提供Web页面的建立和在静态Web页面的基础上进行的简单动态交互,而大型或者商业网站的设计除了会关注网页所呈现给用户的外观,它们更加关注网站的信息发布、信息收集以及信息处理的能力,而这些能力使用前面所介绍的技术是无法获得的,因此计算机技术人员就开发出了各种服务器端动态主页设计技术来完成这些功能。通过本章的学习,应掌握以下内容:·ASP.NET的特点及环境搭建·ASP.NET的WebForm的应用·ASP.NET的数据库编程的应用·ASP.NET的会话控制的应用7.1服务器端动态主页设计概述7.1.1服务器端动态技术的诞生随着Internet应用的深入,Web技术引入的新的商机也逐渐为人们所注意。但是由于当时的Web技术缺乏对交互和信息动态更新的支持,阻碍的Web技术在商业领域的应用。为了突破这种局限,计算机科学家进行了很多种尝试,提出了很多种对Web技术进行信息交互功能扩展的技术,其中最早投入使用并迅速成为主流技术的是“通用网关接口(CGI)”技术,它的全称是CommonGatewayInterface,它的出现令Web技术拥有了强大的交互能力,并且网页设计·272·272扩展了的功能,例如和数据库管理系统(DBMS)交互的能力、运行服务器进程的能力等。这些扩展加速了Web技术在商业上的应用,并且促进了各种大型网站的诞生。CGI技术在其诞生之初以其强大的功能成为90%大型网站首选的构建技术,但是通过使用人们发现CGI技术存在两个致命的问题。首先,由于CGI技术提供了服务器和主机程序的交互能力,也使CGI技术存在比较严重的安全问题,恶意黑客可以通过CGI技术的漏洞控制服务器并造成服务的瘫痪和数据的损失;其次,CGI技术需要为每一次访问建立一个进程来完成对CGI脚本的处理,如果网站的访问量比较大,那么这种处理方式将严重影响网站的性能。由于这些问题的存在,各大软件厂商都纷纷推出新的技术来替代CGI技术,其中比较有影响力的包括PHP、JSP和ASP等等,其中又以MicroSoft公司推出的ASP技术使用最广泛。2000年秋天,MicroSoft公司推出了ASP技术的升级版——ASP.NET技术,本章将通过对ASP.NET技术的介绍,帮助同学们了解和掌握一种服务器端编程技术,拥有建立大型网站的能力。1.ASP技术的历史在讲述ASP.NET历史之前,首先来回顾一下ASP。ASP的第一个版本是0.9测试版。它给WEB开发带来一阵暴风,它能够将代码直接嵌入HTML,使得设计WEB页面变得更简单,更强大,并且通过内置的组件能够实现强大功能,最明显的就是ActiveXDataObjects(ADO),它使得建立一个动态页面如小孩子玩游戏一样简单。最终出场的是ActiveServerPage1.0,它做为IIS的附属产品免费发送。并且不久就在Windows平台上广泛使用。ASP与ADO的结合使用开发者很容易地在一个数据库中建立和打开一个记录集。这不无疑是它如此快就被大众接受的因素,因为你现在能使用这些脚本建立和打开一个记录集,处理和输出任何数据,以任何顺序,几乎只要你能想到的,它就能完成。1998年,微软公司又发布了ASP2.0。ASP1.0和ASP2.0主要区别是外部的组件需要实例化。有了ASP2.0和IIS4.0,我们就有可能建立ASP应用了,而且每个组件就有了自已单独的内存空间。内置的MicroSoftTransactionServer(MTS)也使用制做组件便得简单。微软公司接着开发了Windows2000操作系统。这个Windows版本给我们带上了IIS5.0以及ASP3.0。此次并不是简单对ASP进行补充,核心的不同实际上是把很多的事情交给了COM来做。在windows2000中,微软结合了MTS与COM核心环境做出了COM+,这就让主机有了一种新的方法来使用组件,同样给主机带来了更多的稳定性,成了一个可以升级的效率高的工作平台。IIS5.0在表面上似乎没有改什么,但是在接口上动的手术比较大。在第七章大型网站设计——服务器端动态网页设计·273·273内部,它使用COM+组件服务来对组件提供一个更好的执行的环境。有了这些,微软公司推出了ASP.NET,ASP.NET又叫ASP.NET,他不是ASP的简单升级,而是MicroSoft推出的新一代ActiveServerPages。ASP.NET是微软发展的新的体系结.NET的一部分,其中全新的技术架构会让每个人的编程生活变得更的简单7.1.2MicroSoft.NET与ASP.NET2000年秋天,IT业巨头——MicroSoft公司发布了其以网络为核心的新的技术框架——MicroSoft.NET技术框架,表明微软将以网络为中心,彻底转换产品研发、发布的方式,改变产品和服务的范围。在MicroSoft.NET技术框架中,ASP.NET技术是其中的一个最主要的组成部分之一,它是ASP的下一代版本,然而ASP.NET又并非从ASP3.0自然演化而来,在许多方面,ASP.NET与ASP有着本质的不同。ASP.NET完全基于模块与组件,具有更好的可扩展性与可定制性,数据处理方面更是引入了许多激动人心的新技术,正是这些具有革新意义的新特性,让ASP.NET远远超越了ASP,同时也提供给WEB开发人员更好的灵活性,有效缩短了WEB应用程序的开发周期。ASP.NET与Windows2000Server/AdvancedServer的完美组合,为中小型乃至企业级的web商业模型提供了一个更为稳定,高效,安全的运行环境。要了解ASP.NET的真实面目,首先就得了解一下微软.NET战略。1.Microsoft.NET的历史随着网络经济的到来,微软公司希望帮助用户,能够在任何时候、任何地方、利用任何工具都可以获得网络上的信息,并享受网络通信所带来的快乐。.NET战略就是为着实现这样的目标而设立的。微软公开宣布,今后将着重于网络服务和网络资源共享的开发工作,并称,将会为公众提供更加丰富、有用的网络资源与服务。微软新一代平台的正式名称叫做“新一代Windows服务”(NGWS),现在微软已经给这个平台注册了正式的商标——MicroSoft.Net。在.Net环境中,微软不仅仅是平台和产品的开发者,并且还将作为架构服务提供商、应用程序提供商,开展全方位的Internet服务。在谈及这个平台中使用的新技术,微软透露,它将在.Net环境中提供更多新产品和一揽子的全套服务。MicroSoft.NET平台的基本思想是:侧重点从连接到互联网的单一网站或设备上,转移到计算机、设备和服务群组上,使其网页设计·274·274通力合作,提供更广泛更丰富的解决方案。用户将能够控制信息的传送方式、时间和内容。计算机、设备和服务将能够相辅相成,从而提供丰富的服务,而不是像孤岛那样,由用户提供唯一的集成。企业可以提供一种方式,允许用户将它们的产品和服务无缝地嵌入自己的电子构架中。这种思路将扩展二十世纪八十年代首先由PC赋予的个人权限。MicroSoft.NET将开创互联网的新局面,基于HTML的显示信息将通过可编程的基于XML的信息得到增强。XML是经“万维网联盟”定义的受到广泛支持的行业标准,Web浏览器标准也是由该组织创建的。微软公司为开发它投入了大量精力,但它并不是MicroSoft的专有技术。XML提供了一种从数据的演示视图分离出实际数据的方式。这是新一代互联网的关键,提供了开启信息的方式,以便对信息进行组织、编程和编辑;可以更有效地将数据分布到不同的数字设备;允许各站点进行合作,提供一组可以相互作用的“Web服务”。MicroSoft.NET综述MicroSoft.NET平台包括用于创建和操作新一代服务的.NET基础结构和工具;可以启用大量客户机的.NETUserExperience;用于建立新一代高度分布式的数以百万计的.NET积木式组件服务;以及用于启用新一代智能互联网设备的.NET设备软件。MicroSoft.NET产品和服务—包括Windows.NET,连同建立积木式服务的核心集成套件;MSNTM.NET;个人订购服务;Office.NET;VisualStudio.NET;以及用于.NET的bCentralTM。.Net环境中的突破性改进在于:1.使用统一的Internet标准(如XML)将不同的系统对接;2.这是Internet上首个大规模的高度分布式应用服务架构;3.使用了一个名为“联盟”的管理程序,这个程序能全面管理平台中运行的服务程序,并且为它们提供强大的安全保护后台;.NET平台包括如下组件:1.用户数据访问技术。其中包括一个新的基于XML的、以浏览器为组件的混合信息架构,叫做“通用画板”;2.基于WindowsDNA2000的构建和开发工具;3.一系列模块化的服务,其中包括认证、信息传递、存储、搜索和软件送递功能;4.一系列驱动客户设备的软件;2.什么是ASP.NET?本节将详细介绍称为ActiveServerPages+(ASP.NET)的网络应用程序可编程模板。建立在Microsoft.NET框架上网络应用程序共享一个通用应用程序模板。在这个模型中,网络应用程序是一套起源于基URL的URLs。因此它包含用于生成在浏览器中观看的网页的网络应用程序和网络服务。第七章大型网站设计——服务器端动态网页设计·275·275如同名字所述,ASP.NET是由活动服务器页面(ASP)发展而来。ASP.NET利用commonlanguageruntime和服务框架网络应用程序提供了一个可靠的、自动化的、可扩展的主机环境。ASP.NET也受益于commonlanguageruntime集成模板,简化了应用程序的配制。另外,它提供简化应用程序开发的服务(如状态管理服务)以及高水平的编程模板(如ASP.NETWebForms和ASP.NETWebServices)。ASP.NET的核心是HTTP运行语言,一个高性能的用于处理基于低级结构的HTTP请求的运行语言,而基于的结构与MicroSoftInternetInformationServices(IIS)所提供的ISAPI结构相似。HTTP运行语言是在象服务器上的IIS或客户机上的IE之类的unmanaged主机过程中运行的受控代码。HTTPruntime负责处理引入的所有HTTP请求,并对每个请求应用程序的URL进行解析,然后把请求分配到应用程序以进行进一步的处理。HTTP运行语言是多线程的,并异步处理请求,因此劣质的应用程序代码阻碍不了它对新请求的处理。而且HTTP运行语言假定失败必会发生,因此它被控制为尽最大力量自动地从访问冲突、内存泄漏、死锁等事故中恢复过来。除非是硬件故障,运行语言的目标是100%的可靠性。网络基本上是一个无状态模型,并且在HTTP请求间没有联系,这使得编写网络应用程序很困难,因为应用程序通常需要维护跨多个请求的状态。ASP.NET增强了由ASP引入的状态管理服务,以便为网络应用程序提供三种类型的状态:应用程序、会话、用户。就象在ASP中一样,应用程序状态特定于一个应用程序实例,并且不会持久。会话状态是特定于一个用户与应用程序间的会话的。与ASP会话状态不同,ASP.NET会话状态储存在一个独立的过程中,并且可把它配制成可以储存到一个独立的机器上。这使得会话状态当应用程序在网络群(Webfarm)扩展时非常有用。用户状态类似于会话状态,但通常它不会超时,并且是永久性的。因此,用户状态对储存用户参数和其它个性化的信息是有用的。所有状态管理服务都被实现为HTTP模块,因此它们容易增加到应用程序管道中,或