在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跨平台或扫描二维码关注

赞赏

人赞赏

构建高性能.NET应用之配置高可用IIS服务器-第二篇 IIS请求处理模型相关推荐

  1. 构建高性能.NET应用之配置高可用IIS服务器-第四篇 IIS常见问题之:工作进程回收机制(上)

    通过三篇文章的普及,相信大家对IIS应该有了一个基本的了解.那么从本篇文章开始,我们就开始进入IIS一些比较实际的话题:如何配置IIS,使得其性能尽可能的高. 我们在本篇中主要讲述的就是"工 ...

  2. 构建高性能.NET应用之配置高可用IIS服务器-第三篇 IIS中三个核心组件的讲解(上)

    今天的文章的比较的容易,主要讲述IIS中三个比较重要的组件:协议监听者(Protocol Listeners),WWW服务(World Wide Web Publishing Service)和WAS ...

  3. 构建高性能.NET应用之配置高可用IIS服务器-第五篇 IIS常见问题之:工作进程回收机制(中)...

    我们在本篇中接着讲述"工作进程回收机制". 本篇文章的议题如下:                工作进程回收机制讲解 基于时间的回收机制                基于请求数的 ...

  4. 构建高性能.NET应用之配置高可用IIS服务器-第一篇:IIS必须掌握的知识

    正确而合理的配置IIS是构建一个高性能和高可扩展应用的基础.虽然很多的时候采用默认的配置就已经可以处理一般的情况,但是随着站点应用的发展,特别是当访问量稍微大一点的时候,就会暴露出很多我们认为的&qu ...

  5. 构建高性能.NET应用之配高可用IIS服务器-第五篇 IIS常见问题之:工作进程回收机制(中)

    我们在本篇中接着讲述"工作进程回收机制". 本篇文章的议题如下:          工作进程回收机制讲解 基于时间的回收机制          基于请求数的回收机制         ...

  6. 服务器集群之keepalived配置高可用(资料)

    2019独角兽企业重金招聘Python工程师标准>>> Linux集群概述 • 根据功能划分为两大类:高可用和负载均衡 • 高可用集群通常为两台服务器,一台工作,另外一台作为冗余,当 ...

  7. 《构建高可用Linux服务器》互动网首发

    书名:构建高可用Linux服务器 ISBN:9787111359423 作者:余洪春 定价:79.00元 出版时间:2011年10月 出版社:机械工业出版社 订书页面 编辑推荐: 基于实际生产环境,从 ...

  8. 《构建高可用Linux服务器 第3版》—— 1.4 Linux服务器的日志管理

    本节书摘来自华章出版社<构建高可用Linux服务器 第3版>一 书中的第1章,第1.4节,作者:余洪春 ,更多章节内容可以访问云栖社区"华章计算机"公众号查看. 1.4 ...

  9. 《构建高可用Linux服务器》第一版勘误表(附脚本下载)

    <构建高可用Linux服务器>因为印刷或自己检查不仔细的原因还是有许多错误的,这个在第二次印刷时会统一改正(脚本下载地址为 http://www.hzbook.com/Books/6021 ...

最新文章

  1. 【Markdown】如何在微信公众号上写markdown的文章
  2. PostgreSQL调研
  3. Opengl-面剔除(一种优化方式)
  4. .net的字符串插值,格式化字符串
  5. jszip压缩服务器文件,使用JSZip压缩驻留在服务器上的PDF
  6. 新东方在线、猿辅导等强敌环伺,「好未来」可有好未来?
  7. Objective-C马路成魔【14-关键C语言功能】
  8. (6)学习笔记 ) ASP.NET CORE微服务 Micro-Service ---- AOP框架
  9. Win10 - 下方【任务栏】- 颜色设置方法
  10. ❤️14万字的《微服务开发SpringBoot—从基础高级》(建议收藏)❤️
  11. 记录一个修复ubuntu系统主机前置耳机孔没有声音的方法
  12. 内存映射文件原理(转载)
  13. mysql 同义词_在数据库mysql中存储和检索同义词的最佳方法
  14. 如何获取量化交易历史复权数据?
  15. Java邮箱正则匹配
  16. PHP实现站内信设计思路与方案
  17. python中字典的get函数是什么意思_python字典get()方法用法分析
  18. C#求解一元二次方程的根
  19. 【Unity 知识点】Unity 如何查找被隐藏的游戏对象
  20. python的curses模块使用

热门文章

  1. Linux挂载命令mount详解
  2. Squid反向代理加速缓存+负载均衡实验架构
  3. C# Barrier类
  4. 为啥 .NET 自带的 JsonSerializer 无法序列化 Field ?
  5. .NET Core 服务在 ARM64 服务器中的部署
  6. asp.net core 5.0的一些模块
  7. .NET Standard 来日苦短去日长
  8. 谈了千百遍的缓存数据的一致性问题
  9. ASP.NET Core 性能优化最佳实践
  10. 【实战 Ids4】║ 控制台密码模式搭配Ocelot网关