ASP.NET是Microsoft公司推出的基于.NET Framework的Web应用开发平台,是Web应用开发的主流技术之一,它带给人们的是全新的技术,和由此产生的开发效率的提高,网站性能的提升。使用ASP.NET进行Web应用开发,程序结构更加清晰,开发流程更加简单,从而可以提高开发效率,缩短开发周期。ASP.NET 4.5是在ASP.NET 4.0的基础之上构建的,保留了其中很多令人喜爱的功能,并增加了一些其他领域的新功能和工具。本章将介绍ASP.NET 4.5的相关基础知识,使读者对这一强大的Web编程技术有一个基本的认识。
ASP.NET经过了多年的发展,受到越来越多的编程人员的青睐。在2012年,.NET 4.5正式版本问世了,它的出现代表着一系列可以用来帮助我们建立丰富应用程序的技术又向前发展了一步。
.NET Framework(.NET框架)是微软公司于2002年正式发布的新一代系统、服务和编程平台。它把原有的重点从连接到互联网的单一网站或设备转移到计算机、设备和服务群组上,从而将互联网本身作为新一代操作系统的基础。这样的话,用户就能够通过控制信息的传递方式、时间和内容来得到更多的服务。
.NET框架发展历程已经有整整10个年头了,已从最初的1.0版本发展到目前的4.5版本,平均每两年更新一次。下面就来回顾一下这一段不平凡的过程。
2002年,.NET框架1.0版本(完整版本号是1.0.3705)发布,它是.NET框架最初的版本,它同时也是Visual Studio.NET 2002的一部分。它给软件开发带来了很多激动人心的特性:
● 统一的类型系统,基础类库,垃圾回收和多语言支持。
● ADO.NET 1.0开启了微软全新的数据访问技术。
● ASP.NET 1.0变革了ASP,提供一种全新的方式来开发Web应用程序。
● Windows Forms 1.0把微软开发Windows桌面系统的界面统一在一起。
2003年,.NET框架1.1版本(完整版本号是1.1.4322)发布,它是.NET框架的首个主要升级版本,是Visual Studio.NET 2003的一部分,也是首个Windows Server 2003内置的.NET框架版本。1.1版本发布后,程序界开始追捧这个平台。
2005年,.NET框架2.0版本(完整版本号是2.0.50727.42)发布,这次的变化是革命性的,是Visual Studio.NET 2005的一部分。2.0版本带来的新变化如下:
● ADO.NET 2.0加强了很多功能,提升了性能,能够更好地进行数据层的开发。
● Web服务的性能得到提升,并且在安全性等方面都得以保证。
● 泛型和内置泛型集合的支持,和其他基础类库的扩展,可以让内部的公共类库开发更加简化。
● 全新事物机制(System.Transactions)的引入,让整个系统的事务处理更加方便。
2006年,.NET 3.0发布,这个版本比较特殊,它需要安装.NET 2.0后才能运行,因此软件界普遍不把.NET 3.0当作正式的.NET版本。它提供了如下组件:
● WindowsCommunicationFoundation(WCF),支持面向服务的应用程序。
● WindowsWorkflowFoundation(WF),支持基于工作流的应用程序。
● WindowsPresentationFoundation(WPF),适用于不同用户界面的统一方法。
● WindowsCardSpace(WCS),是一致的数字标识用户控件。
.NET 3.0提供的这些组件为开发企业应用程序提供了一致的基础框架,这样业务开发人员就只需要关注于业务问题的解决即可。
2007年11月19,.NET 3.5发布,它同时是Visual Studio.NET 2008的一部分。.NET 3.5带来的新特性如下:
● ASP.NETAJAX,将AJAX扩展包内置到.NET 3.5里面。
● 语言改进和LINQ,具体改进内容包括自动属性、对象初始化器、集合初始化器、扩展方法、Lambda表达式、查询句法、匿名类型。
● LINQtoSQL实现的数据访问改进。
● 在ASP.NET 3.5扩展版本中推出了MVC编程框架。
2010年,.NET 4.0版本发布,它同时是Visual Studio.NET 2010的一部分。.NET 4.0带来的新特性如下:
● ASP.NET MVC 2.0版本被集成到了Visual Studio 2010中作为一个项目模板出现。
● ASP.NETAJAX 4.0的出现让ASP.NET在AJAX的运用上得到了很大的提高。
● 增加了对使用Web窗体进行路由的内置支持。
● Visual Studio 2010中的网页设计器提高了CSS的兼容性,增加了对HTML和ASP.NET标记代码段的支持,并提供了重新设计的JScript智能感知功能。
● 加强了对视图状态(ViewState)的控制。
2012年,.NET 4.5发布,它同时是Visual Studio.NET 2012的一部分。本书就是基于目前这一最新版本进行ASP.NET 4.5网站开发介绍的。
通过.NET框架的发展历程可以看出,微软的.NET战略就是要进一步解放程序员,让项目开发变得更加高效率,而且更加简单容易操作。沿着这个方向发展,可以预见:在未来的一段时间内,程序开发将不再是专业程序人员的事情,而真正懂业务逻辑的专业人才将会成为项目开发的主力。
ASP.NET 4.5框架支持多种语言,包括:C#、VB、J#、C++和F#等,而本书在后台使用的语言主要是C#。
C#是一个是在.NET 1.0中开始出现的一种新语言,在语法上,它与Java和C++比较相似。实际上C#是微软整合了Java和C++的优点而开发出来的一种语言,是微软对抗Java平台的一个王牌。
.NET框架还支持其他语言,比如J#等,甚至还可以使用第三方提供的语言,比如Eiffel或COBOL的.NET版本。这样就增加了程序员开发应用程序时可供选择的范围。尽管如此,在开发ASP.NET应用程序时VB和C#还是首选。
其实,在被执行之前,所有.NET语言都会被编译成为一种低级别的语言,这种语言就是中间语言(Intermediate Language,IL)。CLR只所以支持很多种语言,就是因为这些语言在运行之前被编译成了中间语言。正是因为所有的.NET语言都建立在中间语言之上,所以VB和C#具有相同的特性和行为。因此利用C#编写的Web页面可以使用VB编写的组件,同样使用VB编写的Web页面也可以使用C#编写的组件。
.NET框架提供了一个公共语言规范(Common Language Specification,CLS)以保证这些语言之间的兼容性。只要遵循CLS,任何利用某一种.NET语言编写的组件都可以被其他语言所引用。CLS的一个重要部分是公共类型系统(Common Type System,CTS),CTS定义了诸如数字、字符串和数组等数据类型的规则,这样它们就能为所有的.NET语言所共享。CLS还定义了诸如类、方法、实践等对象成分。然而事实上,基于.NET进行程序开发的程序员却没有必要考虑CLS是如何工作的,因为这一切都由.NET平台自动来完成。其实CLR只执行中间语言代码,然后把它们进一步编译成为机器语言代码以能够使当前平台所执行。
公共语言运行时(Common Language Runtime,简称CLR)是用.NET语言编写的代码公共运行环境,是.NET框架的基础,也是实现.NET跨平台、跨语言、代码安全等核心特性的关键。它是一个在执行时管理代码的代理,以跨语言集成、自描述组件、简单配制和版本化及集成安全服务为特点,提供核心服务(如内存管理、线程管理和远程处理)。
公共语言运行时管理了.NET中的代码,这些代码称为受托管代码。它们包含了有关代码的信息,例如代码中定义的类、方法和变量。受托管代码中所包含的信息称为元数据。公共语言运行时使用元数据来安全地执行代码程序。除了安全的执行程序以外,受托管代码的目的在于CLR服务。这些服务包括查找和加载类以及与现有的DLL(Dynamic Link Library,动态链接库)代码和组件对象之间的相互操作。
公共语言运行时遵循公共语言架构的标准,能够使C++、C#、Visual Basic以及JScript等多种语言可以深度集成。
动态语言运行时(Dynamic Language Runtime,简称DLR)。就像公共语言运行时(CLR)为静态型语言如C#和VB.NET提供了通用平台一样,动态语言运行时(DLR)为像JavaScript、Ruby、Python甚至COM组件等动态型语言提供了通用平台。
动态语言运行时是一种运行时环境,它将一组适用于动态语言的服务添加到公共语言运行时。借助于动态语言运行时,可以更轻松地开发要在.NET框架上运行的动态语言,而且向静态类型化语言添加动态功能也会更容易。
动态语言运行时的目的是允许动态语言系统在.NET框架上运行,并为动态语言提供.NET互操作性,同时动态语言运行时还可帮助开发人员创建支持动态操作的库。
.NET 4.5框架的另一个主要组件是类库,它是一个综合性的面向对象的可重用类型集合,例如ADO.NET、ASP.NET等。.NET基类库位于公共语言运行库的上层,与.NET Framework紧密集成在一起,可被.NET支持的任何语言所使用。这也就是为什么ASP.NET中可以使用C#、VB.NET、VC.NET等语言进行开发的原因。.NET类库非常丰富,提供数据库访问、XML、网络通信、线程、图形图像、安全、加密等多种功能服务。类库中的基类提供了标准的功能,如输入输出、字符串操作、安全管理、网络通信、线程管理、文本管理和用户界面设计功能。这些类库使得开发人员更容易地建立应用程序和网络服务,从而提高开发效率。
网页是构成网站的基本元素,也是网站信息发布的一种最常见的表现形式。网页主要由文字、图片、动画、音视频等信息组成。本节简单介绍网页的基础知识,包括网页和服务器的交互过程、静态和动态网页以及脚本语言。
人们通过互联网浏览网页时,会自动与网页服务器建立连接。用户提交信息资源的过程称为向服务器“发出请求”。通过服务器解释信息资源来定位对应的页面,并传送回代码来创建页面,这个过程称为“对浏览器的响应”。浏览器接受来自于网页服务器的代码,并将它编译成可视页面。在这样的交互过程中,浏览器称为“客户机”或者“客户端”,整个交互的过程则称为“客户-服务器”的通信过程。
“客户-服务器”这一术语通过概括任务的分布来描述网页的工作方式。服务器(Web服务器)存储数据、解释数据、分布数据。客户机(浏览器)访问服务器以得到数据。为了更详细地理解这一交互过程,必须介绍客户机和服务器如何使用HTTP协议通过Internet进行交互。
HTTP协议又称为“超文本传输协议”,它是一个客户机和服务器端请求和应答的标准。浏览网页时,浏览器通过HTTP协议与服务器交换信息。
HTTP协议具有以下的特点。
(1)HTTP按客户机/服务器模式工作:HTTP支持客户与服务器的通讯,相互传输数据。HTTP定义的事务由以下4步组成:
● 客户与服务器建立连接。
● 客户向服务器提出请求。
● 如果请求被接受,则服务器送回响应,在响应中包括状态码和所需的文件。
● 客户与服务器断开连接。
(2)HTTP是无状态的。也就是说,浏览器和服务器每进行一次HTTP操作,就建立一次连接,但任务结束就中断连接。
(3)HTTP使用元信息作为头标。HTTP对所有的事务都加了头标。它使服务器能够提供正在传送数据的有关信息。比如传送对象是哪种类型,是用哪种语言编写的等等。
(4)HTTP支持两种请求和响应的格式。HTTP由不同的两部分组成,一种是从浏览器发往服务器的请求,另一种是服务器对客户端的响应。HTTP支持两种请求和响应,一种是简单请求和响应,另一种是完全请求和响应。
(5)HTTP是基于文本的简单协议。每个Web主机都有一个服务器进程来监听TCP端口80,以便同前来建立连接的客户取得联系。连接建立后,客户发送一个请求,服务器返回一个响应,然后就释放连接。除建立和释放连接外,HTTP事务处理的主要内容是客户机的请求与服务器端的响应,HTTP常用的请求方法如表1-1所示。
表1-1 HTTP常用的请求方法
早期网站发布的是静态网页,主要由HTML语言组成,没有其他可执行的程序代码。静态页面一经制成,内容就不会再改变,不管何时何人访问,显示的都是一样的内容,如果要修改有关内容,就必须修改源代码,然后重新上传到服务器上。静态页面虽然包含文字和图片,但这些内容却需要在服务器端以手工的方式来变换,因此很难描述为Web程序。下面是一个简单的HTML语言组成的静态网页的代码:
代码说明:该程序包含一个标题和一句文字。其中标题包含在标记<h1>和</h1>之间,文字包含在标记<p>和</p>之间。图1-1显示了该静态网页文件被浏览器解析时的情况。
图1-1 静态网页
HTML是互联网的描述语言,基本的HTML包含由HTML标记格式化的文本和图像内容。文本是HTML要显示的内容,标记则告诉浏览器如何显示这些内容,它定义了不同层次的标题、段落、链接、斜体格式化、横向线等。HTML文件的后缀可以是.htm,也可以是.html。
动态页面不仅含有HTML标记,而且含有可以执行的程序代码,动态页面能够根据不同的输入和请求动态生成返回的页面,例如常见的BBS、留言板、聊天室等就是用动态网页来实现的。动态网页的使用非常灵活,功能强大。
一直到HTML 2.0版本时,HTML表单的引入,这时才开始了真正意义的包含动态页面的Web程序:在一个HTML表单中,所有的控制都放置在<form>和</form>中。当读者在客户端单击“提交”按钮后,网页上的所有内容就以字符串的形式发送到服务器端,服务器端的处理程序根据事先设置好的标准来响应客户的请求。下面的就是由HTML表单构成的动态页面代码。
代码说明:该程序由HTML表单的组成,包括一个标题、4个复选框和一个提交按钮,这些内容和标记均被包含在表单标记之间。该网页运行效果如图1-2所示。
图1-2 动态网页
尽管动态ASP.NET页面已经比较流行,但HTML表单仍然是这些页面的基本组成元素,所不同的是构成ASP.NET页面的HTML表单控件运行在服务器端。所以读者必须要掌握最基本的HTML表单以便能够更好地使用ASP.NET平台进行程序开发。
CGI是Common Gateway Interface的缩写,代表服务器端的一种通用(标准)接口。CGI开启了动态网页的先河。它的运行原理是每当服务器接到客户更新数据的要求以后,利用这个接口去启动外部应用程序(利用C、C++、Perl、Java或其他语言编写)来完成各类计算、处理或访问数据库的工作,处理完后将结果返回Web服务器,再返回浏览器。后来又出现了技术有所改进的ISAPI和NSAPI技术,提高了动态网页的运行效率,但由于CGI在多用户访问时会占用很多的系统资源,并且执行起来速度相对比较慢,因此目前已经很少使用。
在CGI技术之后出现了很多优秀脚本语言,如ASP、JSP、PHP等。脚本语言简化Web程序的开发,一时间成为Web开发人员的最爱。但脚本语言使用起来也并不是那么简单,首先其代码组织混乱,和HTML标记杂乱堆砌在一起,开发维护都非常不方便,以至当ASP.NET的代码隐藏模式出现后,使用这些脚本语言的Web程序开发人员都有耳目一新的感觉;另外脚本语言的编程思想不符合当前流行的面向对象编程思想。因此脚本语言必将会被其他更高级的语言(ASP.NET、Java等)所代替。