一、主持人開場白:
1、戰鬥是辛苦的,同時也是神秘的,戰士們是值得人們敬佩的。
2、讓我們向那些為ASP.NET戰役付出血汗的戰士們致敬!同時也向本場晚會的工作者和觀眾朋友們致敬!
二、用熱烈的掌聲請他們閃亮登場
首先我們有請駐紮在最前線的調度總指揮:IIS司令
主持人:您好,IIS司令,感謝您在百忙中抽空出席本場晚會!
IIS司令:您好,主持人,周末各大網站的訪問量不大,比較閑,前線表示毫無壓力,很高興來到這裡,見到主持人很開心,主持人很帥!
主持人:呵呵,多謝誇獎,也就一點點帥啦。對了,IIS司令,據說您是這場ASP.NET戰役的總指揮,真是太厲害了。
IIS司令:也談不上什麼總指揮,關鍵還要靠戰士們的智慧和勇猛。而且我僅僅負責作戰任務的分配和調度,很多關鍵的地方還要靠我的幾位大
將:ISAPI、w3wp.exe、HttpRunTime、HttpContext、HttpSession、HttpApplication、
HttpModule、HttpHandler等,今天我也把他們帶到現場來了,待會可以請他們上來和觀眾朋友們見見面。
主持人:太好了,每一場勝利的戰役背後除了有一個英明的司令員外還有很多勇猛的將軍,看來很有道理啊。那好,IIS司令,能否給大家分享一下您是如
何指揮這場ASP.NET戰役的,我想在坐的ASP.NET程式員很想聽聽這方面的經驗,尤其是那些初出茅廬的,更要求抱大腿那,嘿嘿,其實本主持也是搞
ASP.NET的~~
IIS司令:OK,看你們那麼有誠意,那我就來講講吧。基於我的職責,我只能講講整場戰役的整體規劃和作戰方向,具體細節待會我的幾位大將可以向你們陳述。這個過程中我盡量少說廢話,有什麼疑問可以隨時打斷我。
主持人:非常感謝總司令,我們認真聽,嘿!下面那位玩dota的程式員,好好聽講了!
一陣熱烈的掌聲之後............
IIS司令:當上頭來指示時,我得先確認指示的類型,由於最近惡搞的指令太多,所以如果我發現是根本子虛烏有的指令,那我就出於禮貌給對方404提
示,接下來就繼續邊喝我的茶邊逛部落格園。如果確認指令是正常的,那我就繼續看這個指令要我軍做什麼,如果是要我上報一些戰況什麼的小事,我就直接寫一封
email給上頭,如果是分配下來的作戰計劃和方針,那我就要和我的大將們討論討論了,當然先找ISAPI將軍。
在坐觀眾甲:司令您好,我不知道這樣理解對不對:當IIS收到一個外部請求時,首先判斷請求的資源類型,如果資源是不存在,那就返回404,如果資
源是一些html或圖片之類的靜態檔案,那就直接把檔案內容返回,如果是aspx類型的檔案,就要從ISAPI那張映射表中找到處理aspx擴充的對應模
塊,比如aspnet_isapi.dll。謝謝!
IIS司令:孩子非常聰明,理解非常正確。下面就以處理aspx為例講下去吧....這時我找來了ISAP將軍,讓他來幫我參考一下這次任務交給誰
來做比較好,具體怎麼實施勝算大。ISAP將軍立即拿出他的ASP.NET戰役軍區的所有將軍的資料資訊表(IIS中的ISAPI擴充表),看了一下各位
將軍的資料和特長後,斬釘截鐵的對我說,交給aspnet_isapi.dll吧,他有這方面的作戰經驗。於是我就把aspnet_isapi.dll請
入帳內,讓他講講具體的作戰方案,很快就有結果了,整體方案如下:
1、首先是將計劃宣布給將士們,擂鼓以振士氣,並正式啟動作戰(啟動w3wp.exe進程)。
2、布置好作戰環境,以佔據作戰最有利地形(建立ASP.NET的執行容器AppDomain和執行個體化HttpRunTime對象,即初始化運行環境,將一些必要的dll載入到AppDomain中)。
3、為每一位士兵分配武器裝備以更好的戰鬥,並派遣各部隊前往指定地點待命(HttpRuntime將請求轉交給HttpApplication,HttpApplication為每一個請求建立HttpContext對象,這些對象主要包含了HttpRequest、HttpResponse、
HttpSessionState等,這些對象在程式中可以通過Page類或者Context類進行訪問。)
4、戰鬥開始,將士們處理各自的戰鬥事務,包括處理上頭下達的臨時指示。(HttpApplication逐個處理每個HttpModule,我們可以在這個請求真正被HttpHandler處理之前附加一些需要的資訊在這個HTTP請求資訊之上,或者針對截獲的這個HTTP請求資訊作一些額外的工作。)
5、戰鬥結束,處理戰鬥結果並向上級彙報(Http請求經過所有的Module之後,它會被HttpHandler處理。在這一步,執行實際的一些操作,通常也就是.aspx頁面所完成的商務邏輯。)
大致方案就是這樣,下面附上一張作戰圖(圖片來源):
主持人:謝謝,非常感謝IIS司令,經過他的講解,終於讓我知道這場ASP.NET戰役是如何獲勝的了,也讓我明白了ASP.NET的運行機制和原理。
IIS司令:其實這中間還有很多細節沒講,這些細節主持人可以繼續採訪這場戰役中幾位功不可沒的大將軍:ISAPI、w3wp.exe、
HttpRunTime、HttpContext、HttpSession、HttpApplication、HttpModule、
HttpHandler,明天周一了,各大網站的訪問量該上來了,得去前線繼續調度了,先走一步,再見!
主持人:好的,再次感謝!廣告之後下周回來,更多戰鬥細節有待揭曉,歡迎大家屆時繼續收看,大家先互相交流著先。
該晚會由青藤屋首播,由部落格園同步轉播,晚會有不足之處請指出。