绪论 ASP.NET的工作原理
ASP.NET是建立在.NET基础之上的,在运行ASP.NET的服务器上必须安装了.NET,要理解ASP.NET的工作原理就必须理解.NET、.NET Framework、公共中间语言。
1..NET
对于.NET,微软公司也没有一个详细确切的定义。但是可以这样认为:.NET是微软公司要提供的一系列产品的总称。具体说来,.NET由下面的几个部分组成:.NET战略、.NET Framework、.NET企业服务器和.NET开发工具。
.NET战略是指把所有的设备通过Internet连接在一起并把所有的软件作为这个网络所提供的服务的想法。
.NET Framework是一个程序设计环境,它提供了具体的服务和技术,方便开发人员建立相应的应用程序。
.NET企业服务器是指SQL Server 2013之类由.NET Framework应用程序使用的服务器端产品。它们虽然不是由.NET Framework编写成的,但是它们都支持.NET。
为了能够在.NET Framework上进行程序开发,微软把Visual Studio进行升级,并把升级后的产品命名为Visual Studio.NET。这就是.NET开发工具。
2..NET Framework
.NET Framework是.NET战略的核心。.NET Framework分为以下几个部分:MS中间语言、CLR、.NET Framework类库、.NET语言、ASP.NET和Web服务。
MS中间语言是.NET的通用语言。无论使用哪一种.NET语言编写的程序代码,在执行之前,都会把它编译成为MS中间语言。
CLR(Common Language Runtime,公共语言运行库)用于执行MS中间语言。
.NET Framework类库中包含了大量可以实现重要功能的代码库。用户在编写程序的时候可以很方便地把这些库调用到应用程序中,实现更加复杂的功能。由于这 些类库的存在,使得编写功能强大的程序更加容易。
.NET语言是指可以将使用其编写的代码编译成为MS中间语言的编程语言。常见的语言有VB.NET和C#等。
Web服务是指可以通过Web访问的组件。
3.公共中间语言
在.NET Framework中使用高级语言(如VB.NET、C#等)编写的程序,需要在运行前将其编译成为中间语言(如MS中间语言)。需要注意的是,中间语言并不是一种可以直接执行的机器代码。与高级语言编写的代码相比,它的可读性很差,但是进行了一系列的优化。
为了执行中间语言,需要一个执行环境CLR。CLR在.NET Framework中的位置十分重要,可以说是.NET Framework的基础。CLR用JIT(Just-In-Time)编译器把中间语言代码编译成可以执行的代码,并对程序进行最后的、与机器相匹配的优化,使得程序可以在所在计算机上尽可能高效地运行。
采用这种方式的原因是,早期的编译方式是把程序源代码直接编译成机器代码。这时编译好的程序虽然也进行了与机器相匹配的优化,但是这些优化都是针对编译源代码的机器进行的。如果把编译好的程序放到其他类型的机器上,那么所进行的优化就有可能没有任何意义,并且如果机器的硬件发生变化,那么还有编译后的程序无法执行的可能,因为新的机器可能没有原来机器所拥有的某种资源。而如果采用了公共中间语言的方式,就可以很好地解决这个问题。由于中间语言与机器无关,所以它可以在任何一个可以运行CLR的机器上运行。并且由于所有的关于机器的优化都是由CLR进行的,所以不存在早期编译所产生的由于机器不同而导致不兼容的问题。
4.ASP.NET的工作原理
首先,有一个HTTP请求发送到Web服务器要求访问一个Web网页。Web服务器通过析客户的HTTP请求来定位所请求网页的位置。如果所请求的网页的文件扩展名是.aspx,么就把这个文件传送到aspnet_isapi.dll进行处理,由aspnet_isapi.dll把ASP.NET代码提交CLR。如果以前没有执行过这个程序,那么就由CLR编译并执行,得到纯HTML结果;如已经执行过这个程序,那么就直接执行编译好的程序并得到纯HTML结果。最后把这些HTML结果传回浏览器作为HTTP响应。浏览器收到这个响应之后,就可以显示Web网页工作原理及流程如图0-1所示。
图0-1 ASP.NET工作原理