【ACCESS精品源码栏目提醒】:网学会员ACCESS精品源码为您提供IIS工作原理-通俗易懂 - 其它资料参考,解决您在IIS工作原理-通俗易懂 - 其它资料学习中工作中的难题,参考学习。
ASP.NET 页面与 IIS 底层交互和工作原理详解第一回:引言我查阅过不少 Asp.Net 的书籍,发现大多数作者都是站在一个比较高的层次上讲解Asp.Net。
他们耐心、细致地告诉你如何一步步拖放控件、设置控件属性、编写 CodeBehind代码,以实现某个特定的功能。
这种做法,实际上是回答了“如何去做”的问题,却没有回答“为什么可以这样做”的问题。
尽管我很推崇 悉江华 先生的《圣殿祭祀的 Asp.Net 开发详解》一书,但当我翻看了一下其对角色Role 和 用户Member的讲解时, 我决定跳过去直接读后面的章节。
因为我发现他也随了大流,对这部分的讲解停留在“如何去做”的层面上。
我相信像悉先生 这样的牛人是不可能不了解底层运作原理的,仅仅是因为那本书原本就已经很厚了吧。
当你按“如何去做”所讲解的内容去开发程序的时候,对于你的用户,你仍是一名程序员;但对于实现了 MembershipProvider 和 RoleProvider 抽象类的微软开发人员来说,你已经成了他们的一个用户。
NOTE:我既不反对一些作者只讲解“如何去做”,也不反对你只学“如何去做”,这样也有它的好处,就是可以快速开发。
我只是建议多掌握一点底层知识,对一些问题会有更好的理解。
希望通过这一系列文章的讲解,可以让你更好的理解 Asp.Net 的运作原理和做以了解。
Http 请求处理流程概述思考“为什么在地址栏输入 www.tracefact.net 就可以看到张子阳的个人空间?”,类似于思考“为什么苹果是往地上掉不是往天上飘?”。
对于普通访问者来说,这就像每天太阳东边升起西边落下一样是理所当然的;对于很多程序员来说,认为这个与己无关,不过是系统管理员或者网管员的责任。
毕竟,IIS 是 Windows 的一个组件,又不是 Asp.Net 的一个组成部分。
而实际上,从你轻拍回车到页面呈现在你眼前的十分之一秒内,IIS 和.NetFramework 已经做了大量的幕后工作。
你可能觉得了解这些幕后工作是如何运作的无关紧要,作为程序员的你只要保证开发出的程序可以高效地运行就可以了。
然而,在开发过程中,你却发现常常需要使用诸如HttpContext 这样的类。
这个时候,你可曾思考过这些类的构成和类的实体是如何创建的?你可能简单地回答:HttpContext 代表当前请求的一个上下文环境。
可你又知道 IIS 、Framework、Asp.Net 是如何协同工作处理每个 Http 请求、如何区分不同的请求、IIS、Framework、Asp.Net 三者之间的数据如何流动么?回答上面这些问题,首先需要了解 IIS 是如何处理页面请求的,这也是理解 Form 验证模式和 Windows 验证模式 的基础。
Http 请求刚刚到达服务器的时候 当服务器接收到一个 Http 请求的时候,IIS 首先需要决定如何去处理这个请求(NOTE: 服务器处理一个.htm 页面和一个.aspx 页面肯定是不一样的么)。
那 IIS 依据什么去处理 呢?―― 根据文件的后缀名。
服务器获取所请求的页面(NOTE:也可以是文件,比如 jimmy.jpg)的后缀名以后,接 下来会在服务器端寻找可以处理这类后缀名的应用程序, 如果 IIS 找不到可以处理此类文件 的应用程序,并且这个文件也没有受到服务器端的保护(NOTE:一个受保护的例子就是 App_Code 中的文件,一个不受保护的例子就是你的 js 脚本),那么 IIS 将直接把这个文 件返还给客户端。
能够处理各种后缀名的应用程序, 通常被称为 ISAPI 应用程序 (NOTE: Internet Server Application Programe Interface,互联网服务器应用程序接口)。
虽然这 ISAPI 听上 去还挺气派,也算是“应用程序”呢,但仔细看看它的全称就明白了:它实际上只是一个接口, 起到一个代理的作用,它的主要工作是映射所请求的页面文件 和与此后缀名相对应的 实际的处理程序。
让我们更进一步地看一下 ISAPI ,看看它到底是什么样子,请按下面的步骤进行: 打开 IIS。
选择随意一个站点,鼠标右键,“属性”。
选择“主目录”选项卡。
选择“配置”。
你应该会看到如下的画面: 图 1. 应