IIS介绍
IIS7及以上版本提供的請求-處理架構包括以下內容:
? Windows Process Activation Service(WAS)可以讓站點支持更多協議,不僅僅是HTTP和HTTPS
? 可以通過增加或移除模塊來自定義Web服務器引擎
? 集成IIS和ASP.NET請求-處理管線
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請求服務
以下列表描述了請求-處理流程:
總結
- 上一篇: 链表定义、链表的插入、链表的删除、链表的
- 下一篇: 冰点文库下载器去广告版百度文库下载工具