IIS6、IIS7和IIS8各版本的差别是什么?

一、写在前面

目前市面上所用的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 上的多核扩展;

交流QQ:2881064157

时间: 2024-10-05 23:37:10

IIS6、IIS7和IIS8各版本的差别是什么?的相关文章

IIS6、IIS7和IIS8各版本的差别

一.写在前面 目前市面上所用的IIS版本估计都是>=6.0的.所以我们主要以下面三个版本进行讲解 服务器版本 IIS默认版本 server2003 6.0 server2008 7.0 server2012 8.0 二.IIS6的请求过程 由图可知,所有的请求会被服务器中的http.sys组件监听到,它会根据IIS中的 Metabase 查看基于该 Request 的 Application 属于哪个Application Pool, 如果该Application Pool不存在,则创建之.否则

IIS7 和IIS8.0 HTTP 错误 500.19 - Internal Server Error 问题的解决方案

百度了好久,没找到解决问题确切的答案,我也知道肯定是权限的问题,当然,经过一番尝试之后,终于解决了,解决之道如下(个人方法,可以一试): 1.找到你的配置文件所在的文件夹,我的是 E:\源码\ASP.NET\DtCms10Beta2 2.右键,点击属性,切换到"安全"选项卡上,将 IIS-IUSRS 用户组添加到安全列表中,并按需求赋予其权限(我赋予了修改的权限),更改后如下图: 3.查看 web.config 的安全权限,如果有此用户组的权限则说明成功,否则进行下一步: 4.退回到根

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

近期写了个扫描IIS托管站点然后定期注册到Consul的小工具,随意网上拷贝了个帮助类,搞完本机测试没问题,扔到服务器发现硕大的一个异常.. System.Runtime.InteropServices.COMException (0x80005000): 未知错误(0x80005000) 在 System.DirectoryServices.DirectoryEntry.Bind(Boolean throwIfFail) 在 System.DirectoryServices.Directory

IIS7 和IIS8.0 HTTP 错误 500.19 - Internal Server Error 问题的解决方式

百度了好久,没找到解决这个问题确切的答案,我也知道肯定是权限的问题,当然,经过一番尝试之后,最终攻克了,解决之道例如以下(个人方法,能够一试): 1.找到你的配置文件所在的目录,我的是 E:\源代码\ASP.NET\DtCms10Beta2 2.右键,点击属性,切换到"安全"选项卡上,将 IIS-IUSRS 用户组加入到安全列表中,并按需求赋予其权限(我赋予了改动的权限),更改后例如以下图: 3.查看 web.config 的安全权限,假设有此用户组的权限则说明成功,否则进行下一步:

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

这是适用于IIS7,IIS7.5,IIS8.0及以上的ThinkPHP的伪静态规则,把以下代码保存成web.config文件,放到FTP的web目录内即可. <?xml version="1.0" encoding="UTF-8"?> <configuration> <system.webServer> <rewrite> <rules> <rule name="ThinkPHP_NiPai

IIS6,IIS7中查看w3wp进程

当我们服务器创建了很多应用程序池,然后某个w3wp.exe进程占用CPU和内存过高,我们怎么查找这个w3wp.exe进程属于哪一个网站呢.其实微软为我们提供了很好的查看工具: 首先打开windows任务管理器–点击查看—选择列–把PID给钩上! 就可以在进程里面看到PID的选项了, 在IIS6 中可以用iisapp 命令查看到所有w3wp进程PID对应的网站情况了 点击运行–输入CMD–输入iisapp -a 很奇怪,这里显示PID的,是用弹出窗口一个个出现的,太不利于查看了!! 例如: 命令:

IIS7.5,IIS8.0批量添加主机头

https://wenku.baidu.com/view/492dcc523968011ca3009178.html IS7.5,IIS8.0 批量添加主机头 一.备份 IIS 使用AppCmd.exe 备份IIS 打开cmd cd c:\windows\system32\inetsrv Appcmd add backup 记住上面命令产生的备份文件. 默认产生的IIS配置文件存放在 c:\windows\system32\inetsrv\backup 二.添加你所需要的主机头 1. 找到bac

IIS修改队列长度(IIS6+IIS7)

Internet Information Services (IIS) 限制了在任何给定时间可在队列中等待的应用程序池请求的最大数量.如果达到此限制,则所有新请求都将被拒绝,而且用户将收到错误消息“503 – 服务不可用”.默认情况下,IIS 将队列长度设置为 1,000 个请求.该默认值可能太低,因为如果队列长度为 1,000,Communicator Web Access(2007 R2 发行版)将只能处理大约 650 个并发用户,此后将开始拒绝新用户. 为帮助确保 Communicator

IIS+PHP上传文件大小限制和上传时间限制,iis7和iis8上传文件大小限制和上传时间限制

先说IIS这边的配置                                                                  一:点击站点"管理"下的"配置编辑器". 二:设置上传超时时间限制.点击下拉菜单节(S),选中system.web>httpRuntime将executionTimeout的值设为00:30:00(即30分钟) 三:设置上传文件大小限制. 点击下拉菜单节(S),选中system.webServer>sec