系列文章:
构建高性能.NET应用之配置高可用IIS服务器-第一篇:IIS必须掌握的知识 
构建高性能.NET应用之配置高可用IIS服务器-第二篇 IIS请求处理模型
       今天的文章的比较的容易,主要讲述IIS中三个比较重要的组件:协议监听者(Protocol Listeners),WWW服务(World Wide Web Publishing Service)和WAS(Windows  Process Activation Service),理解这三个组件的功能,是理解IIS的必须的知识。
       下面,我们首先来看第一个。
协议监听者(Protocol Listeners)
 
       我们知道,很多不同类型的应用程序都需要它们的客户端以不同的协议与它们进行通信,我们稍微简单的来举几个例子让大家明白:
  1. Web应用程序采用Http来通信。Web应用程序通过接受Http请求和发送Http响应给客户端的方式来进行通信。
  2. WCF应用程序可以采用很多的协议来进行通信,包括:HTTP, NET.TCP, NET.PIPE, 和 NET.MSMQ
       在这里各种不同类型的应用中,协议监听者就是一个负责监听特定协议的请求,然后把请求传递给IIS的组件。每一个协议都有它自己的监听者。IIS7中包括了四个协议的监听者:HTTP.SYS,NET.TCP,NET.PIPE和NET.MSMQ。如果要对其他的协议进行监听,那么可以采用PlugIn的方式写新协议的监听者组件,然后插入到IIS7中(就是采用所谓的“插件式”方式)。
       IIS 7中采用了HTTP.SYS来对HTTP请求进行监听,同时在安全性方面也有了改进,因为它也可以对SSL的请求进行监听。另外,对于HTTP.SYS,在IIS6和IIS7中都支持一下功能:
  1. HTTP.SYS被实现成为内核模式中的一个组件
  2. HTTP.SYS直接将接受到的HTTP请求传递给请求的处理工作进程,并且在中途不会出现任何的进程间通信的开销。在IIS6的之前的版本中,HTTP请求首先被用户模式中的进程inetinfo.exe接受,这个进程再把请求转发给IIS中的工作进程,这个过程就涉及到了工作进程与IIS之前跨进程通信了。
  3. 每一个应用程序池都有自己的基于内核模式的请求队列。当没有足够的工作进程来处理HTTP请求的时候,HTTP.SYS就把新来的请求放在队列中。之后,工作进程会直接从队列中拿出请求进行处理,在过程中不会涉及到进程间通信的开销。
  4. HTTP.SYS会把请求的输出的响应缓存在内核缓存中,方便对后续的请求进行快速的响应。
下面,我们来看第二个组件。
WAS(Windows  Process Activation Service)
 
       WAS的主要的职责就是去读取applicationHost.config配置文件中的配置项。有些配置项是用来配置协议监听者的。在之前我们讨论过,每一个协议都有一个监听者(在IIS6中,可以支持的协议只有HTTP协议,在IIS7中因为引入了插件式的协议监听者的方式,所以可以处理很多的协议,如果大家还记得话,要把WCF部署在IIS6中,那么就只能通过HTTP协议)。
       如果WAS直接与每个特定的协议监听者交互,那么WAS就与这些协议的监听者仅仅的耦合在了一起,不能与其他的协议监听者交互(因为我们无法修改WAS的代码,除非微软发布新的版本)。所以在IIS7中,在这里就引入了协议监听适配器,其实就是采用了adapter模式了。让WAS依赖抽象,而不是依赖具体的实现。
       协议监听适配器将WAS与具体的协议的监听者隔离。那么每一个协议都有一个协议的适配者。例如HTTP协议的适配者知道如何去适配HTTP.SYS,如果对设计模式比较熟悉的朋友,应该非常清楚这一点了。
       WAS读取applicationHost.config配置文件中的配置信息,然后把这些信息用在协议监听适配者上。协议监听适配者采用这些配置的信息来监听特定通道的请求。
       WAS除了读取配置信息以外,它还负责其他一些比较重要的职责:
  1. 使用applicationHost.config配置文件的配置信息来配置和启动应用程序池,来处理请求。
  2. 根据applicationHost.config配置文件的配置信息来监控,重启,关闭和管理应用程序池以及相关的工作进程。
       理解了上面的内容之后,那么现在应该就非常清楚IIS中请求的处理流程了:
  1. 当请求达到的时候,协议监听程序开始运行。
  2. 特定的协议监听适配者被创建,并且通知特定的应用程序池请求到达。
  3. WAS检查是否已经有一个工作进程在应用程序池中运行,如果没有,WAS就在应用程序池中创建一个新的工作进程,然后把请求交给这个工作进程来处理,并且这个进程也随后去处理应用程序池的请求队列中的请求。
 
系列文章链接:
IIS负载均衡-Application Request Route详解第一篇: ARR介绍  
IIS负载均衡-Application Request Route详解第二篇:创建与配置Server Farm
 IIS负载均衡-Application Request Route详解第三篇:使用ARR进行Http请求的负载均衡(上) 
IIS负载均衡-Application Request Route详解第三篇:使用ARR进行Http请求的负载均衡(下) 
IIS负载均衡-Application Request Route详解第四篇:使用ARR实现三层部署架构
 
负载均衡原理与实践详解 第一篇(重新整理)   
负载均衡原理与实践详解 第二篇(重新整理)   
负载均衡原理与实践详解 第三篇 服务器负载均衡的基本概念-网络基础   
负载均衡原理与实践详解 第四篇 使用负载均衡器的服务器群    
负载均衡原理与实践详解 第五篇 负载均衡时数据包流程详解   
负载均衡原理与实践详解 第六篇 健康检查机制详解(上)   
负载均衡原理与实践详解 第七篇 健康检查机制详解(下)   
负载均衡原理与实践详解 第八篇 网络地址转换(上) 
负载均衡原理与实践详解 第八篇 网络地址转换(下) 
负载均衡原理与实践详解 第九篇 服务器负载均衡技术进阶-会话保持(上)

构建高性能.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请求处理模型

    在IIS 中,Http监听者(http.sys)和请求处理者由两个系统服务在控制着.一个是WWW 服务,另外一个就是Windows Process Activation. 对于WWW服务,它主要是监控 ...

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

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

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

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

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

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

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

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

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

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

  9. 运维企业专题(4)LVS高可用与负载均衡前篇——先学原理,再学配置

    我保证看完这篇文章,面试时问到相关问题轻轻松松解决,本文末尾会结合全文教你该如何回答面试官的问题 1.什么是LVS? LVS 是 Linux Virtual Server的简写,意即Linux虚拟服务 ...

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

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

最新文章

  1. IBM云的商务动作之我见(2):IBM 和 VMware 战略合作推进混合云
  2. npp夜光数据介绍 viirs_惊艳!珞珈一号卫星“眼中”的夜光衡水
  3. Dynamics 365 CRM 开发架构简介
  4. 699美元起!一加8系列新机海外发布:120Hz 2K屏+骁龙865
  5. a,b值进行交换的方法
  6. c语言中int(*t) n,C语言基础知识(下)
  7. python 八大排序_python-打基础-八大排序
  8. tp3.2 自动加载
  9. VMware16虚拟机:下载和安装教程
  10. activitimq集群搭建_activemq集群的搭建
  11. mysql入库字段编码导致报错 Incorrect string value: ‘\xF0\x9F\x91\xBD\xF0\x9F...‘ for column ‘content‘
  12. 强学习器------随机森林
  13. APARNET阿帕网
  14. 红米note2卡在android,红米note2怎么插卡?红米note2插卡流程详解
  15. 2021前端面试经典计算题总结。
  16. wifi底层学习之路:二,无线配置管理服务cfg80211
  17. 离散数学题目——派谁出国学习
  18. 阿里云智能 AIoT 首席科学家丁险峰:阿里全面进军 IoT 这一年 | 问底中国 IT 技术演进...
  19. java毕业设计企业门户网站源码+lw文档+mybatis+系统+mysql数据库+调试
  20. jupyter中显示行数_如何在Jupyter Noteb中显示所有行

热门文章

  1. WORD的一个BUG
  2. curl: (48) An unknown option was passed in to libcurl
  3. 编程基本功:如何判断两个线段有重叠?
  4. 文字处理技术:布局的核心是行布局,难点是换行算法
  5. Freeswitch视频会议远超Telepresence
  6. 市场经济中,大家都象防贼一样保留证据,以用于欠薪仲裁
  7. 键盘按键用硅胶材料更好
  8. Python安装cv2库出错及解决:Could not find a version that satisfies the requirement cv2
  9. 喜庆博客积分排名进入前3万
  10. 介绍一下mysql数据库_一、简单介绍下 MySQL数据库