zoukankan      html  css  js  c++  java
  • IIS架构介绍

    IIS7及以上版本提供的请求-处理架构包括以下内容:

    • Windows Process Activation Service(WAS)可以让站点支持更多协议,不仅仅是HTTP和HTTPS
    • 可以通过增加或移除模块来自定义Web服务器引擎
    • 集成IIS和ASP.NET请求-处理管线

    本文介绍组件、模块和请求-处理架构,包括以下几个部分:

    1. IIS中的组件
    2. 协议监听器
    3. 超文本传输协议栈(Http.sys)
    4. 万维网发布服务(WWW Service)
    5. 进程激活服务(WAS)
    6. IIS中的模块
    7. 本地模块
    8. 托管模块
    9. IIS中的请求-处理
    10. 应用程序池
    11. IIS中的HTTP请求服务

    IIS中的组件

     IIS包含多个组件来为程序和Web服务角色执行重要的功能。每个组件各司其责,如监听对服务器的请求、管理进程、读取配置文件。这些组件包括协议监听器(如HTTP.sys)、服务(如万维网发布服务、进程激活服务)。

    协议监听器

     协议监听器接收相关协议请求,将它们送到IIS来处理,向请求者返回响应。例如,当客户端浏览器向因特网请求一个网页,HTTP监听器(HTTP.sys)接受这个请求并将它转送到IIS来处理。当IIS处理完请求,HTTP.sys就会将结果返回到客户端浏览器。

    IIS将HTTP.sys当作默认的协议监听器来监听HTTP和HTTPS的请求。HTTP.sys是在IIS中引进来的作为HTTP相关的协议监听器。IIS7及以上版本接续保留HTTP.sys作为IIS协议监听器,它增加了对SSL的支持。

    为了支持使用http及https的服务与程序,你可以采用wcf技术。WCF具有监听器与监听适配器。

    超文本传输协议栈(Http.sys)

     HTTP监听器属于操作系统下的网络子系统,它是通过内核-模式设备驱动即超文本传输协议栈(Http.sys)来实现的。

     在IIS6.0中,HTTP.sys取代了Winsock。Winsock是用户-模式组件,用来接收http请求并发送http响应。

    HTTP.sys具备以下几点好处:

    • 内核-模式缓存,资源缓存在内核-模式下,无需切换到用户模式。
    • 内核-模式请求队列,多个请求会导致上下文切换中的少量开销,因为内核直接将请求转递到正确的工作进程。如果没有合适的进程接收请求,内核模式队列一直持有这个请求,直到有合适的进程接收它。
    • 请求的预处理及安全过滤

    万维网发布服务(WWW Service)

     在IIS7及以上版本中,以前在WWW Service中处理的功能被分割到两个服务中:WWW Service和进程激活服务(WAS)。

     提示:下文中W3SVC和www service是一样的意思。

     WWW Service如何在IIS6.0中工作的?

    在IIS6.0中,WWW Service管理以下几个领域:

    • HTTP管理及配置:WWW Service从IIS元数据中读取配置信息,并用这些配置信息配置并更新HTTP监听器(HTTP.sys).另外WWW Service开启、监视并管理处理HTTP请求的工作进程。
    • 进程管理:WWW Service管理程序池和工作进程,如开启、停止和回收工作进程。另外,WWW Service检测进程的健康,并调用快速失败侦测去开启新进程,当多个工作进程在可配置的时间内失败。
    • 性能监视:WWW Service监视性能,并为网站和IIS缓存提供性能计数器。

    WWW Service如何在IIS中工作?

     在IIS中,WWW Service不再管理工作进程。取而代之,它成为HTTP监听器的监听适配器。作为监听适配器,WWW Service主要用来配置HTTP.sys,当配置变化更新HTTP.sys,当请求到达队列通知WAS。

    另外,WWW Service继续收集网站计数。因为性能计数器依然是WWW Service的一部分。

    进程激活服务(WAS)

    在IIS7及以上版本中,WAS管理应用程序池及工作进程。这样就允许你对HTTP和non-HTTP使用相同的配置和处理模型。 

    另外,如果你不需要HTTP功能,你只需要运行WAS,而不用WWW Service。例如,你可以通过WCF监听适配器来管理WEB服务,如NetTcpActivator,如果你不需要监听HTTP.sys里的HTTP请求,你就不需要运行WWW Service。

    WAS中的配置管理

     在启动阶段,WAS从ApplicationHost.config中读取确定的信息,然后把这些信息传给服务器的监听适配器。监听适配器负责建立WAS和协议监听器沟通渠道。一旦监听适配器接收到配置信息,他们将配置相应的监听器,并准备让监听适配器监听请求。

    在WCF中,监听适配器包含了监听器的功能。因此,WCF的监听适配器(如NetTcpActivator)是基于WAS信息来配置的。一旦NetTcpActivator被配置,它用net.tct协议来监听请求。

    下面列表描述了WAS读取的配置信息的类型:

    • 全局配置信息
    • 协议配置信息,包括HTTP和Non-HTTP协议
    • 应用程序池配置,如进程账户信息
    • 网站配置,如绑定于程序
    • 应用程序配置,如可用的协议与程序所属的应用程序池

    如果ApplicationHost.config发生变动,WAS收到通知并更新监听适配器。

    进程管理

    WAS管理HTTP和Non-HTTP的应用程序池和工作进程。当应用程序池接收到客户端请求,WAS检测是否有正在运行的工作进程,如果应用程序池有工作进程可以处理请求,监听器就把该请求传递给工作进程来处理,否则,WAS将创建一个新的工作进程。

    注释:因为WAS管理HTTP与NON-HTTP协议的进程,你可以在一个应用程序池中处理不同的协议。你可以开发一个程序,如你可以为http和net.tct开发一个xml服务

    IIS中的模块

     IIS提供了一个与以前版本不同的架构。取代了保留大部分功能在server内部,IIS包括了web引擎,你可以根据需要添加、移除模块。

    模块是一些server用来处理请求的独立的特性。如IIS利用authentication模块来负责客户端身份认证,缓存模块来管理缓存活动。

    新的架构比起以前版本提供了一下的优点:

    • 你可以挑选那些你需要的模块
    • 你可以自定义一个server
    • 你可以开发一个自定义的模块来取代以前的模块,或添加新功能

    新的架构改善了安全,简化了管理。通过移除不必要的功能,降低了服务器被攻击的面和内存占用。

    本地模块

     HTTP模块:

    CustomErrorModule、ttpRedirectionModule、ProtocolSupportModule、RequestFilteringModule、WebDAVModule

    安全模块:

    AnonymousAuthenticationModule、BasicAuthenticationModule、CertificateMappingAuthenticationModule、DigestAuthenticationModule、IISCertificateMappingAuthenticationModule、RequestFilteringModule、UrlAuthorizationModule、WindowsAuthenticationModule、IpRestrictionModule

    内容模块:

    CgiModule、DefaultDocumentModule、DirectoryListingModule、IsapiModule、IsapiFilterModule、ServerSideIncludeModule、StaticFileModule、FastCgiModule

    压缩模块:

    DynamicCompressionModule、StaticCompressionModule

    缓存模块:

    FileCacheModule、HTTPCacheModule、TokenCacheModule、UriCacheModule

    日志及诊断模块:

    CustomLoggingModule、FailedRequestsTracingModule、HttpLoggingModule、RequestMonitorModule、TracingModule

    托管支持模块:

    ManagedEngine、ConfigurationValidationModule

     托管模块

     AnonymousIdentification、DefaultAuthentication、FileAuthorization、FormsAuthentication、OutputCache、Profile、RoleManager、Session、rlAuthorization、

    UrlMappingsModule、WindowsAuthentication

     IIS中的请求-处理

     在IIS中,IIS与ASP.NET的请求管线整合在一个管线中来处理请求。新的请求-处理架构由一系列有序的本地和托管模块组成,来处理具体任务。

    这种设计具备很多优点。首先,所有文件类型都可以利用以前只能在托管代码中的特性。例如静态文件、asp文件、其它类型文件都可以利用asp.net的Form认证和URL认证了。第二,消除IIS和ASP.NET的功能重复。例如,当客户端请求一个托管文件,服务在继承管线中调用合适的认证模块,在老版本中,认证模块要经过IIS与ASP.NET两个管线。第三,你可以集中在一个地方管理模块了。

     应用程序池

     应用程序池通过进程边界分离应用程序来阻止程序之间的影响。在IIS7及以上版本中,应用程序池继续采用IIS6.0的工作进程隔离模式。另外,你现在可以指定采用哪种模式:经典模式与集成模式。

     IIS中的HTTP请求服务

     以下列表描述了请求-处理流程:

    1. 当客户端浏览器向服务器发起一个HTTP请求,HTTP.sys拦截到这个请求
    2. HTTP.sys联系WAS获取配置信息
    3. WAS从配置库applicationHost.config请求配置信息
    4. WWW Service接收到配置信息,如应用程序池及网站配置
    5. WWW Service利用配置信息配置HTTP.sys
    6. WAS为这个请求在应用程序池中开启一个工作进程
    7. 工作进程处理请求,并并将响应返回到HTTP.sys
    8. 客户端接收到响应

     原文:Introduction to IIS Architecture

  • 相关阅读:
    USACO Milk2 区间合并
    Codeforces 490B Queue【模拟】
    HDU 3974 Assign the task 简单搜索
    HDU 5119 Happy Matt Friends(2014北京区域赛现场赛H题 裸背包DP)
    Cin、Cout 加快效率方法
    POJ 1159 回文LCS滚动数组优化
    POJ 2479 不相交最大子段和
    POJ 1458 最长公共子序列 LCS
    在阿里最深刻的,还是职场之道给我的震撼
    精细化
  • 原文地址:https://www.cnblogs.com/andrewcn/p/2994933.html
Copyright © 2011-2022 走看看