程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> 關於.NET >> WF4.0實戰(十八):模擬asp.net生命周期

WF4.0實戰(十八):模擬asp.net生命周期

編輯:關於.NET

概述:

大多數.net程序員都熟悉:浏覽器向iis服務器發送一個請求,會發生一些什麼事情。今天,我將使用WF+WCF模擬一下整個處理過程。當 然這裡只是模擬,與實際還是有差距的,如果敘述的有問題,請指出。主要是為了說明:用流程的視覺去看待asp.net請求處理過程,你會 發現它其實不難。好了,還是照舊,先看效果,在說如何實現,最後總結,附代碼下載。

對於一個來自客戶端的請求,我將iis的處理總結為兩個流程

1、創建Asp.net環境(如果是第一次請求)

2、使用MHPM處理請求(M:HttpModule、H:HttpHandler、P:Asp.net Page、M:HttpModule)

模擬的原型是:一個aspx頁面上有一個button,點擊這個button去請求iis服務

模擬的實際是:一個wpf窗體上有一個button,點擊這個button去調用一個服務端的WCF服務,這個服務裡面包含了模擬asp.net生命周期 的wf流程,這個wcf服務返回MHPM處理請求的步驟。

1、在服務端創建一個文本文件,來模擬iis創建asp.net環境。

2、使用一個順序工作流來模擬MHPM事件處理請求,並將處理步驟返回給客戶端。本來想返回一段html腳本的,打算以後完善吧。

效果:

1、模擬的處理結果:在wpf頁面上輸出處理的步驟。

2、在服務端模擬iis創建一個asp.net宿主環境:模擬為將創建的步驟寫在一個文本文件中。

實現:

這個流程處理比較大,我分幾個步說明:

1、先看整個大流程,和我之前說的一樣分了兩個流程去處理,一個為 flowchart,一個是順序工作流,如下圖:

2、看下創建Asp.net環境的flowchart,雙擊進去查看, 如下圖:

上圖可以很清楚地看出來,首先檢查請求頁面的後綴名,根據後綴名確定處理的dll,看是否能處理這個請求,例如如果是aspx,將請求 傳遞 ‘aspnet_isapi.dll’處理。接著判斷是否是第一次請求,如果是第一次請求,使用ApplicationManager類創建運行站點 的應用程序域。這個應用程序域用來區別同一個iis上的不同asp.net應用程序的環境。這個應用程序域會創建HttpRuntime對象等來構建宿 主環境。這個宿主環境緊接著會創建‘HttpContext’ , ‘HttpRequest’ 和‘HttpResponse’等對象。 如果是第一次請求還要創建一個HttpApplication,並將HttpApplication分配給 ‘HttpContext’ 等對象。如果不是第一次, 可以從處理池中取HttpApplication。最後將這個請求交給HttpApplication處理。詳見msdn。

3、使用MHPM處理請求,這個流程也很長,分四步查看,整個流程如下圖,兩個HttpModule、一個HttpHandler、和一個Asp.net Page:

3.1 第一個HttpModule,如下圖:

3.2 HttpHandler

3.3 ASP.NET Page頁面生命周期:

3.4 第二個HttpModule,如下圖:

 

總結:

asp.net請求處理就是一個流程,故我使用了wf去模擬這個流程,我將這個流程宿主在wcf中來模擬將asp.net應用程序宿主在iis中。

這篇文章其實能說很多很多,asp.net的每個處理步驟都有很多東西,我一時很難說清楚,所以畫了這麼一個流程來幫助自己理解,後來 就寫了這篇文章,希望對您也有幫助。如果您對文章有意見和見解,請給我留言,謝謝。

出處:http://zhuqil.cnblogs.com

代碼:http://files.cnblogs.com/zhuqil/wfaspdotnetpagelifecycle.rar

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved