一、写在前面

目前市面上所用的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. IE7、IE8、IE9、IE10后各版本的更新内容和各版本的差别

    在程序员的眼里,万恶的IE6的结束对他们而言是一种解脱,IE7首次开始完整支持W3C标准,从此之后IE的标准化之路就开始越走越顺,以下总结了IE7以后各版本的更新内容,和各版本的差别,作为Web开发人 ...

  2. iPhone计算机怎么看之前的,怎么看手机型号-入手iPhone8/8P前要看!A1863/A1864与其他版本的差别...

    虽然大家都觉得今年iPhone 8/8Plus的风头完全被iPhone X抢了,但随着大家对iPhone X的新鲜感渐渐过去,性价比相较更高一些的iPhone 8/8P好像又重新被大家给想起了.小伙伴 ...

  3. windows IIS6/IIS7/IIS8服务器SSL证书安装

    在证书控制台下载IIS版本证书,下载到本地的是一个压缩文件,解压后里面包含.pfx文件是证书文件,pfx_password.txt是证书文件的密码. 友情提示: 每次下载都会产生新密码,该密码仅匹配本 ...

  4. 64位IIS(IIS6/IIS7)上跑Asp + Jet.Oledb的设置要点

    由于64位操作系统不支持Microsoft OLE DB Provider for Jet驱动程序,也不支持更早的Microsoft Access Driver (*.mdb)方式连接.所以用于 Ac ...

  5. IIS7、IIS8添加net.tcp协议报错 未将对象引用设置到对象的实例。

    IIS7版本以上 添加net.tcp协议 再添加binding 解决办法: 目录:C:\Windows\System32\inetsrv\config\applicationHost.config文件 ...

  6. Myeclipse的standard、pro、spring、Blue、Bling版本功能差别

    Myeclipse有standard.pro.spring.Blue.Bling版本,下面是这些版本的功能上的差别 各版本区别:http://www.myeclipseide.com/module-h ...

  7. iis7与php哪个版本稳定,IIS7(Windows7)下最简单最强安装多版本PHP支持环境

    IIS7(Windows7)下最简单最强安装多版本PHP支持环境 IIS7(Windows7)下最简单最强安装多版本PHP支持环境 最近调试程序,要在PHP5.2和5.3之间换来换去,而习惯了wind ...

  8. IIS7 中多个版本php共存的方法

    准备工作 由于项目久远,采用的是window+IIS+MySql+php5.4.由于本地使用laravel框架对php版本有要求,中间请教了大佬,想到多个php版本共存的方法.以下是本地测试环境: 一 ...

  9. android 版本权限差别,android apk 的root 权限和USB adb 权限的区别

    USB adb 权限是指,当adb 连接手机时,手机中的守护进程adbd 的权限为root 权限,从而它的子进程也具有root 权限,通常如果adb shell 看到是: Android 4.0 以后 ...

  10. iis php多版本共存,IIS7中多个版本php共存的方法

    最近又重回.net,用回IIS.然后用到某个php开源项目,需要低版本的php,之前装的一个php5.5不能用,所以决定降一下版本,后面发现其实可以多个版本共用.于是打算分享下.分享之前网上先搜了下, ...

最新文章

  1. 布线须知:机柜在数据中心机房的三个新用途
  2. 递归 反转链表 c语言程序,C语言反转链表的递归算法
  3. laravel artisan
  4. 整合 Google 开源 C++ 代码
  5. Chrome开发者工具之JavaScript内存分析
  6. django,form表单,数据库增删改查
  7. 神经网络动态可视化工具
  8. Win socket编程--IOCP完成端口模型
  9. 超酷!Python 绘制属于你的世界地图
  10. 微信连WiFi(sign有误)
  11. java entity tostring_EntityUtils.toString(entity)处理字符集问题解决
  12. 将 zlib 引入到C++项目中 历程
  13. cad移动时捕捉不到基点_CAD很难学吗?其实不然,掌握这10个知识你就能走天下!...
  14. 【论文导读】- Cluster-driven Graph Federated Learning over Multiple Domains(聚类驱动的图联邦学习)
  15. JS方法/函数重载的姿势
  16. arduino并口屏_零知开源软件库使用-ILI9341并口显示屏
  17. 【数据结构、字符串、C语言】统计字符串中不同字符出现的频度
  18. ez_pz_hackover_2016
  19. 编程之美学习笔记--一摞烙饼的排序
  20. 【C++IO流】C++打印浮点数小数点后多少的方法,序列化

热门文章

  1. MACH SYSTEMS—总线接口转换工具
  2. 汽车品牌查询及车型大全查询
  3. pdf复制json不全的问题
  4. java毕业设计汽车零件厂绩效管理mybatis+源码+调试部署+系统+数据库+lw
  5. python dll注入监听_DLL注入和API拦截
  6. VC-MFC程序设计精讲
  7. 企业应如何改善设备功率因数,有效规避罚款
  8. 经典CNN网络:VGG16-输入和输出
  9. linux 罗技摄像头驱动下载,罗技bcc950驱动下载-罗技bcc950摄像头驱动下载 v1.1.87.0官方版--pc6下载站...
  10. idea svn分支与分支合并_IDEA用SVN创建分支和合并分支的方法步骤