关于继续做好网站建设得通知,网页设计师培训教程,只放一个图片做网站,用win2003做网站在IIS 中#xff0c;Http监听者(http.sys)和请求处理者由两个系统服务在控制着。一个是WWW 服务#xff0c;另外一个就是Windows Process Activation。 对于WWW服务#xff0c;它主要是监控IIS的配置文件#xff0c;将新的配置信息用到HTTP.sys和WAS上。同时它也维持一些性… 在IIS 中Http监听者(http.sys)和请求处理者由两个系统服务在控制着。一个是WWW 服务另外一个就是Windows Process Activation。 对于WWW服务它主要是监控IIS的配置文件将新的配置信息用到HTTP.sys和WAS上。同时它也维持一些性能计数器把一些数据反应到计数器中所以很多的时候我们可以查看性能计数器来获取一些与IIS性能相关的信息。 对于Windows ProcessActivation这个服务的作用就是激活和唤起进程来处理请求同时它也对正在运行的处理进程进行管理例如资源的回收以及控制着性能相关的一些限制。 在IIS6中上面的讲述的功能都是包含在WWW服务中的在IIS 7中就将上面的功能分开了。到了这里我感觉再讲下去大家可能要犯糊涂了为了使得后文的讲述更加的方便和大家的理解更加的深入这里很有必要把IIS 的架构讲讲也非常有必要把IIS 6和IIS 7进行比较。 首先我们就来看看IIS6的请求的处理模型如下图所示 在上图中我们可以看到 1. IIS6的请求处理模型中包含了两个管道一个是IIS6的处理管道一个是ASP.NET的处理管道。 2. 每一个请求的处理都要经过两个管道。当请求经过IIS的管道的时候IIS6就是根据它的metabase里面的配置信息来决定把请求给那个来处理。如果是请求与ASP.NET相关的内容的那么请求就会被交个aspnet_isapi.dll来处理然后aspnet_isapi.dll就加载CLR运行时并且开启ASP.NET的处理管道。 3. 在两个管道中有一些相同的处理流程例如身份验证。 另外ASP.NET允许我们在处理管道中注册自己的module或者handler这一点朋友们都应该很清楚了。我们一般在ASP.NET的应用程序级别的事件中注册我们自己的逻辑当ASP.NET触发这些事件的时候我们的代码就运行了。 IIS6中引入了两个不同的处理管道引发了下面的问题 1. 导致了一定程度的重复处理。例如两个管道中都有身份验证的组件那么一个请求就要被验证两次。 2. 因为ASP.NET的管道在IIS的管道之后所以对于每个请求的处理决定完全是由aspnet_isapi.dll这个组件来控制的也就是说ASP.NET的处理管道无法在早期对请求如何进行处理下决定。 3. 一旦把请求交给了ASP.NET的处理管道之后IIS 的处理管道要等到ASP.NET处理完毕之后才能接着处理而且一旦ASP.NET管道处理完之后ASP.NET的处理管道无法影响后续的IIS6的处理管道。 4. 只有把请求交给了aspnet_isapi.dll之后ASP.NET处理管道才开始启动并且请求的内容只能是与ASP.NET相关的例如aspx页面等。ASP.NET处理管道无法处理对非ASP.NET内容的请求例如图片脚本等。也就是说程序在一定的程度上无法对非ASP.NET的资源进行验证与授权的保护。 既然IIS6有上面的一些问题IIS7的出现就解决了上述的问题。IIS 7移除了对aspnet_isapi并且将IIS和ASP.NET的进行了集成成为一个管道如下 一个请求的处理流程变的简单了效率应该会提高。事实也确实如何并且一个请求的线程切换次数也变少了这极大的提升了性能不用把请求从IIS的线程切换到ASP.NET的处理线程。 通过改进IIS 7解决了上述我们提到的几个问题 1. 集成管道中不会包含重复的组件。 2. ASP.NET的module和handler可以在管道的如何地方发挥作用从而使得我们可以对请求的处理流程进行完全的控制。 3. 可以处理对非ASP.NET内容的请求。 相关内容 构建高性能.NET应用之配置高可用IIS服务器-第一篇IIS必须掌握的知识 作者介绍汪洋哪合伙CEO曾大汉电子商务有限公司首席技术官副总裁负责公司产品、技术、运营参与商业模式设计。华康移动医疗前CTO副总裁首席架构师。微软MVP .NET社区新闻深度好文微信中搜索dotNET跨平台或扫描二维码关注 赞赏 人赞赏