當前位置:編程學習大全網 - 編程語言 - asp.net的核心是什麽

asp.net的核心是什麽

HttpContext

該對象是最重要的核心對象。

屬性:HttpRequest、HttpResponse、靜態屬性HttpContext.Current、Server、Cache

補充屬性User, Items

User屬性保存於當前請求的用戶身份信息。如果判斷當前請求的用戶是不是已經過身份認證,可以訪問:Request.IsAuthenticated這個實例屬性。

Items這是個字典,因此適合以Key/Value的方式來訪問。如果希望在壹次請求的過程中保存壹些臨時數據,那麽,這個屬性是最理想的存放容器了。 它會在下次請求重新創建,因此,不同的請求之間,數據不會被***享。

如果希望提供壹些靜態屬性,並且,只希望與壹次請求關聯,那麽建議借助HttpContext.Items的實例屬性來實現。

HttpRequest,

使 ASP.NET 能夠讀取客戶端在 Web 請求期間發送的 HTTP 值。

在HttpRequest包含的所有輸入數據,QueryString, Form, Cookie,請求頭,(ip,hostName,MacAddress) ,瀏覽器的相關信息、請求映射的相關文件路徑、URL詳細信息、請求的方法、請求是否已經過身份驗證,是否為SSL等等。

大量的屬性如:IsAuthenticated、HttpMethod 、QueryString、Form 、Files、Cookies、InputStream(輸入流)、Headers 、Path、Browser 、RawUrl 、MapPath、FilePath、Url 、Params、ApplicationPath、AppRelativeCurrentExecutionFilePath 、Filter 等等。

HttpHandler、HttpModule

HttpModule檢查請求,

HttpHandler處理事件

HttpResponse

向客戶端返回結果。所有需要向客戶端返回的操作,都要調用HttpResponse的方法。

如:響應頭、響應流。

擁有屬性:StatusCode 、ContentType、Cookies 、OutputStream(輸出流)、Cache 、Filter 等

方法:

AppendHeader()

Write()

End()

Redirect()

TransmitFile()

在服務端發生異常不能返回正確結果時,設置StatusCode屬性,比如:Response.StatusCode = 500,可以激活客戶端的ajax回調方法:error:function(){alert("服務器出錯!")}

HttpRequest和HttpResponse的Filter,這個屬性實現的效果就是裝飾器模式,妳可以對輸入輸出流進行裝飾。

HttpRuntime,

下有:HttpRuntime.Cache緩存。Page.Cache或者HttpContext.Cache都是對它的引用。

HttpServerUtility

下有:HtmlEncode()方法,用於防止註入攻擊,它負責安全地生成壹段HTML代碼。

HtmlAttributeEncode(),它也是用於防止註入攻擊,安全地輸出壹個HTML屬性。

JavaScriptStringEncode(),也是為了防止註入攻擊,安全地在服務端輸出壹段JS代碼。

UrlEncode()方法,對url進行編碼。

HtmlDecode(), UrlDecode()用於解碼。

Execute()此方法用於,獲取壹個頁面或者用戶控件的HTML輸出時很有用。

HttpApplication

當HttpContext對象創建以後,HttpRuntime將隨後創建壹個用於處理請求的對象,這個對象的類型就是HttpApplication。

HttpApplication有19個標準事件

BeginRequest,這個事件標誌著服務器處理工作的開始。

開始處理請求後,第壹個工作就是要驗證用戶的身份以實現安全機制

通過AuthenticateRequest和PostAuthenticateRequest兩個事件處理

AuthenticateRequest 驗證請求,壹般用來處理取得請求的用戶信息

PostAuthenticateRequest 已經獲取請求的用戶信息

第四個事件AuthorizeRequest觸發的時候,表示進行用戶權限的檢查工作

第五個事件則標誌著完成了用戶權限的檢查工作

如果用戶沒有通過安全檢查,壹般情況下,將跳過剩下的事件,直接觸發最後壹個事件結束處理。

ResolveRequestCache事件標誌著檢查緩存

PostResolveRequestCache 表示緩存檢查的結束。

(這個地方比較特殊,如果有緩存的話,是不是就立即給用戶返回結果了呢?)

在ASP,NET中提供了許多處理程序,程序員也可以自定義處理程序,為了處理這個請求,ASP.NET必須按照匹配規則找到壹個處理當前求情的處理程。

PostMapRequestHandler事件標誌ASP.NET已經獲得了這個處理程序對象,HttpContext的Handler就表示這個處理對象。

為了獲取用戶以前保存的數據,AcrequireRequestState事件給程序員提供了壹個切入點,PostAcrequireRequestState 則表示已經獲取了用戶的數據,可以在處理中使用了。

接下來就是PreRequestHandlerExcute真正開始告訴程序員處理程序就要開始工作了。如果用戶的狀態已經獲取,還有需要在處理程序處理之前進行的工作,就在這個事件中開始吧。

PreRequestHandlerExcute事件之後,ASP.NET服務器將通過執行處理程序完成請求的處理工作,這個處理程序可能是壹個Web窗體,也可能是壹個Web服務。

處理程序完成後,服務器開始掃尾工作,PostRequestHandlerExcute 通知程序員,ASP.NET服務器的處理程序已經完成。

第12個事件是個重要的節點啊!

ReleaseRequestState事件通知程序員釋放在處理程序中操作的特殊數據,PostReleaseRequestState則表示已經釋放完成。

如果希望將這次處理的結果緩存起來,以便於在後繼的請求中可以直接使用這個結果,UpdateRequestCache 提供了處理的機會。

PostUpdateRequestCache 則表示緩存已經更新完成。

以上16個事件結束了,還剩下三個事件。

17 LogRequest 請求的日誌操作

18 PostLogRequest 已經完成了請求的日誌操作

19 EndRequest 本次請求到此結束

應用程序域創建完成之後,壹個ISAPIRuntime對象被創建,並自動調用它的ProcessRequest()方法。

創建壹個HttpWorkerRequest對象,調用ISAPIRuntime對象的StartProcessing()方法,開始HTTP Pipeline,壹個HttpRuntime類型的對象被創建,HttpRuntime對象調用ProcessRequest()方法,創建了壹個HttpContext對象。HttpContext 對象包含了在編程中非常常見的HttpResponse(返回給瀏覽器處理過的信息)和HttpRequest(獲得Http請求信息) 兩個對象。

HttpModule對象:在初始化HttpApplication對象時被初始化,壹個HttpApplication 可以有多個HttpModule對象,HttpModule對象的主要職責就是在不同時期把相應的事件註冊到HttpApplicatioin事件當中去。比如完成身份驗證,授權,操作緩存等。Asp.Net MVC UrlRouteModule路由模塊就是重寫了HttpModele

HttpHandler對象:在初始化HttpApplication對象時被初始化,壹個HttpApplication可以有多個HttpHandler對象,HttpHander負責最終處理Http請求。不同的文件有不同的HttpHander負責處理。Asp.Net MVC MvcHandle完成了最終處理。

  • 上一篇:編程用哪種電腦主機比較好?
  • 下一篇:三胎政策呼之欲出,將成“兩會”熱詞?三胎概念股壹覽表
  • copyright 2024編程學習大全網