MVC — 初步理解IIS工作流程
聲明:本文只是自己的總結和積累。IIS7.x
目錄
- IIS流程及組成部分
- ASP.NET流程及組成部分
- IIS與ASP.NET? MVC
一、IIS流程及組成部分
1、Http.SYS:負責監聽HTTP請求(它不屬于IIS范疇,但是和IIS聯系緊密)
Http.SYS和IIS是相互獨立的,但是之間又是密不可分的。Http.SYS是一個運行在內核模式下的一個網絡驅動,它歸屬于TCP/IP網絡子系統的一部分,且是運行在TCP/IP之上。它負責著來自網絡HTTP請求的監聽和過濾。靜態地址請求會直接返回到客戶端,動態請求會進入下個流程。
高效:它作為網絡驅動持續運行,持續監聽過濾請求,對請求做出快速的響應。對于請求頻繁的資源,會將返回內容緩存在內核模式下,后續的請求會從緩存中返回內容,這樣就避免了用戶模式和內核模式的頻繁切換。
? 穩定:它獨立于IIS運行在內核模式下的網絡驅動程序,不需要執行用戶程序,也不會受到Web進程和IIS進程的影響。
2、SvcHost.exe :接收Http請求、配置管理、工作進程管理
W3SVC(3W公共服務—World Wide Web Publishing Service):?接收Http請求
WAS(Windows進程激活服務—Windows Process Activation Service):配置管理、工作進程管理
????? 其中,WAS就可以接收處理HTTP請求和非HTTP請求。WAS包含一組非HTTP請求監聽器適配接口,可以接收監聽器監聽的非HTTP請求。其實W3SVC充當了HTTP請求監聽器適配器。
WAS通過請求后綴名與Web應用映射關系,創建工作者進程(或者將請求分發給對應建好的工作者進程),在工作者進程中加載ISAPI(互聯網服務器應用程序接口—Internet Server Application Programe Interface)
ISAPI應用程序實質是一個接口,一個IIS與.NET的橋梁入口,ISAPI維護著很多的橋梁(.dll),例如加載ASP.NET應用的Aspnet_ispai.dll。
在穿過橋梁Aspnet_ispai.dll之后,隨之進入ASP.NET的地界了,隨后的CLR的加載,AppDomain創建、Web Application的初始化等等。
?
二、ASP.NET流程及組成部分
????
進入到ASP.NET應用,加載CLR,創建AppDomain, HttpApplication的初始化。接下來穿過一串Module,這些Module里可能實現了當請求進入程序之前的時候出發一些操作或者當請求完成時出發的一些操作,期間會經過Handler,來真正相應我們所寫的后臺代碼。請求—>Module(請求進入前觸發的操作)—> Handler(我們的aspx頁面的后臺代碼繼承自Page,Page繼承IHttpHandler)—>Module(請求結束后觸發的操作)
?
三、IIS與ASP.NET? MVC
客戶端請求 —> 監聽器監聽 —> HTTP請求接收(W3SVC)或者 WAS接收到非HTTP請求 —> 對應映射關系并創建工作者進程—> 加載ISAPI—> ?????
加載相應的 XXX_ispai.dll —>進入ASP.NET應用—> 加載CLR —> 初始化我們的應用程序? —>一系列 Module操作—>對應Handler的加載執行
? ? ASP.NET中的Module和Handler擁有很高的擴展性。MVC的就是擴展了Module和Handler。在請求進入前,觸發Moudle,對請求進行攔截,分析其controller和action,以及其它相關的上下文信息,然后調用擴展了IHttPHandler接口的MvcHandler,進而進入到我們所對應的具體后臺代碼。
轉載于:https://www.cnblogs.com/sunchong/p/4102815.html
總結
以上是生活随笔為你收集整理的MVC — 初步理解IIS工作流程的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 解决VS2005 远程工具无法通过同步软
- 下一篇: 传说中的window8 的种子