一、写在前面

目前市面上所用的IIS版本估计都是>=6.0的.所以我们主要以下面三个版本进行讲解

服务器版本 IIS默认版本
server2003 6.0
server2008 7.0
server2012 8.0

二、IIS6的请求过程

由图可知,所有的请求会被服务器中的http.sys组件监听到,它会根据IIS中的 Metabase 查看基于该 Request 的 Application 属于哪个Application Pool, 如果该Application Pool不存在,则创建之。否则直接将 Request 发到对应Application Pool 的 Queue中。

每个 Application Pool 对应着一个Worker Process:w3wp.exe。在IIS Metabase 中维护着 Application Pool 和w3wp的映射。WAS(Web Administrative service)根据这样一个mapping,将存在于某个Application Pool Queue的request 传递到对应的worker process(如果没有,就创建这样一个进程)。在 worker process 初始化的时候,加载ASP.NET ISAPI。

同时,在w3wp.exe的内部,ASP.NET 是以 IIS ISAPI extension 的方式外加到 IIS(其实包括 ASP 以及 PHP,也都以相同的方式配置),ASP.NET ISAPI进而加载CLR。从而为ASP.NET Application创建一个托管的运行环境,在CLR初始化的使用会加载两个重要的dll:AppManagerAppDomainFactory和 ISAPIRuntime。通过AppManagerAppDomainFactory的Create方法为Application创建一个 Application Domain;通过ISAPIRuntime的ProcessRequest处理Request,进而将流程拖入到ASP.NET Http Runtime Pipeline的范畴

注:ISAPI,意思:互联网服务器应用程序接口(Internet Server Application Program Interface).

三、 IIS7的工作过程

1.HTTP.sys监听拦截客户端请求开始处理。
2.HTTP.sys通过配置信息联系WAS获取相关信息。
3.WAS 向配置存储中心请求配置信息。applicationHost.config。
4.WWW 服务接受到配置信息,配置信息指类似应用程序池配置信息,站点配置信息等等。
5.WWW 服务使用配置信息去配置 HTTP.sys 处理策略。
6.WAS为这个请求对应的应用程序池(Application Pool)开启W3WP Worker Process。
W3WP Worker Process处理以后,将Response返回给HTTP.sys。
客户端接受到Response内容。

注意:我们称3-6为初始化配置的过程,配置完毕之后,以后的请求就直接到第七步.当然IIS被重启了,就重头来过.

三、IIS7程序池托管管道模式

W3WP.exe 进程在IIS7中如何工作, 取决于IIS 7 的应用程序池托管管道模式是什么,IIS7目前有2个模式: 经典模式和集成模式

经典的意思大家都知道,就是一个一直以来所使用的方式(便于大家记忆),IIS7其中经典模式的W3WP.exe工作方式就是IIS6的处理方式.

即: IIS ISAPI extension,也就是 aspnet_isapi.dll

IIS7集成模式是一个伟大的改进,让IIS集成了.NET功能(不在依靠之前IIS版本的aspnet_ISPAI.DLL),也就是说所有的
HTTP Request请求都要经过.NET来处理(包括html, php等),也因为 .NET 的诸多功能已经成为 IIS 7
的一部份.性能上也得到了提升.

四、IIS8和IIS7有哪些不一样的地方

1. IIS 8.0 只能运行于>=Windows Server 2012 and Windows 8的平台上;
2. IIS 8.0 Application 的初始化被包括在IIS 8.0中. IIS 7.5 Application 初始化(RC) 被作为一个外带模块;
3. IIS 8.0 管理工具已经为 ASP.net 4.5功能更新 . IIS 7.5中还没有;
4. IIS 8.0 集成了SSL 认证支持. IIS 7.5 还没有;
5. IIS 8.0 CPU 节流已经得到更新且包括额外的节流选项,而 IIS 7.5还没有变化;
6. IIS 8.0 集成了动态IP 地址限制功能
7. IIS 8.0 集成了FTP尝试登陆限制功能.
8. IIS 8.0 在NUMA 上的多核扩展;

IIS6、IIS7和IIS8各版本的差别的更多相关文章

  1. .NET获取IIS7.0及以上版本托管服务信息

    近期写了个扫描IIS托管站点然后定期注册到Consul的小工具,随意网上拷贝了个帮助类,搞完本机测试没问题,扔到服务器发现硕大的一个异常.. System.Runtime.InteropService ...

  2. iis7、iis8配置备份还原

    原文 iis7.iis8配置备份还原 方法1: 1.打开我们的IIS管理器,在功能视图里找到“共享的配置”这个功能然后双击进入. 2.进入“共享的配置”后单机右上方的“导出配置”选项,选择导出配置文件 ...

  3. IIS7和IIS8环境下 ThinkPHP专用URL Rewrite伪静态规则

      这是适用于IIS7,IIS7.5,IIS8.0及以上的ThinkPHP的伪静态规则,把以下代码保存成web.config文件,放到FTP的web目录内即可. <?xml version=&q ...

  4. IIS6/IIS7环境下实现支持mp4视频随意拖动、预览播放、边下载边播放

    前几天,一客户需要在IIS环境下实现MP4视频可以随意拖动观看,边下载边播放.一看这要求,IIS本身是无法实现,想着应该需要用插件,于是GG一番,还真找到这样的插件,此组件为H264-Streamin ...

  5. window IIS6/IIS7取消脚本执行权限,禁止运行脚本木马

    网站安全中,对目录的执行权限是非常敏感的,一般来说,可以写入的目录是不能够拥有脚本的执行权限的,可写入的目录如: data.uploads,data目录主要是基本配置文件和缓存数据,uploads则是 ...

  6. IIS6,IIS7中查看w3wp进程

    当我们服务器创建了很多应用程序池,然后某个w3wp.exe进程占用CPU和内存过高,我们怎么查找这个w3wp.exe进程属于哪一个网站呢.其实微软为我们提供了很好的查看工具: 首先打开windows任 ...

  7. iis6|iis7|配置URLRewriter|64位操作系统下|.net2.0|.net4.0|配置URLRewriter|Web.config配置详情

    想必很多ASP.NET的码友们在IIS配置伪静态被严重纠结过不止一次两次,本园主经过多次站点伪静态配置,总结了一下,IIS版本:IIS 6.IIS 7,服务器:Windows Server 2003. ...

  8. IIS7 IIS7.5 IIS8.5 HTTP 错误 500.19 – Internal Server Error解决方案小记

    今天配置IIS(win8.1 IIS8.5)的web.config出现如下错误: HTTP 错误 500.19 – Internal Server Error无法访问请求的页面,因为该页的相关配置数据 ...

  9. 2.每人自己建立一个HelloWorld项目,练习使用git的add/commit/push/pull/fetch/clone等基本命令。比较项目的新旧版本的差别。答题人:张立鹏

    第1步:创建SSH Key.在用户主目录下,看看有没有.ssh目录,如果有,再看看这个目录下有没有id_rsa和id_rsa.pub这两个文件,如果已经有了,可直接跳到下一步.如果没有,打开Shell ...

随机推荐

  1. ZOJ 2745 01-K Code(DP)(转)

    题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=1745 题目大意:一个串由N个字符组成,每个字符是‘0’或者是‘1’, ...

  2. 【转】Vim命令合集以及乱码问题解决

    乱码问题 """""""""""""""" ...

  3. Linux下的visudo命令

    新建了一个test账号,su 后使用visudo命令,发现不可用,退出putty,直接用root登录,可以用了,小白了,visudo只能用root执行,简单写下visudo命令吧 visudo后得到的 ...

  4. IE8+等兼容、360调用webkit内核小记

    首先是处理IE8.9等的兼容问题,注意以下几点: 1,尽可能严格要求自己使用w3c推荐的方式编写html/css 2,在html页面顶部添加<!DOCHTML html>,不清楚请查看参考 ...

  5. php 地址跳转

    header('Location: ' . $sns->getRequestCodeURL());

  6. 使用Unidac内置连接池

    第一步: 放一个TUniconnection并设置相关属性 之后直接使用TUniconnection对象即可 跟踪unidac源码uni单元1540行中可以看到 Connect方法调用CreateIC ...

  7. 学习python网络数据采集笔记-1、2章

    英文不好只能看中文版的.邮电出版社翻译的真很烂. 以上是吐槽,以下是正文. 书中用的pthon 3.X版本,建议安装python3.4以上的版本,低版本的没有自带pip安装插件会比较麻烦. 下载地址: ...

  8. vi 编辑器的使用

    1)    vi的自动对齐功能   我从window的网页上拷贝了一段代码到vi中,结果是不对齐的.见下图 此时为了对齐,我的做法是: ESC-v  进入视图模式,然后全选 再然后直接按 = 号. 然 ...

  9. 如何得到django中form表单里的复选框(多选框)的值( MultipleChoiceField )

    直接写代码吧 CHECKBOX_CHOICES = ( ('Value1','Value1'), ('Value2','Value2'), ) class EditProfileForm(ModelF ...

  10. VMware网络选项分析

    摘自资料:VMware网卡选项分析.zip 很多朋友都曾问到关于Guest和Host互联,其实这并不是一件困难的事情,只要能够理解VMware的网络模型即可,今天结合着我的虚拟机,来详细介绍一下VMw ...