【Asp.Net】一般處理程序(ashx處理程序) 和 aspx頁面處理程序

在Asp.Net WebForm開發方式中,我們經常會用到一般處理程序和aspx頁面。本文主要分享兩者之間的異同。

首先請看一張圖:
在這裏插入圖片描述
在這個圖中,HttpHandler就是處理程序。

相同點:

  1. 如果把一般處理程序(ashx處理程序)和aspx頁面處理程序放到上圖中,它們應該處於相同的位置,都實現了IHttpHandler接口。實現了IHttpHandler接口才具備處理請求的能力。
    在這裏插入圖片描述

上面代碼就是對Http請求進行處理的,任何實現了該接口的類都可以對Http請求進行處理(調用各自的ProcessRequest()方式)。aspx頁面繼承自後臺代碼,後臺代碼又繼承Page類,所以aspx頁面具有處理Http請求的能力,同樣是一般處理程序,它也實現了IHttpHandler接口,也可以對Http請求進行處理。

  1. 都能處理靜態和動態頁面。

不同點:

1 功能上

  1. 用戶請求涉及到複雜的頁面佈局,使用aspx。aspx頁面既可以作爲頁面呈現給用戶,也可以對用戶的請求進行處理(由此也可看出aspx的前臺和後臺兩者之間是緊耦合的關係,而這種緊耦合是不利於項目某項內容的變更的)。
  2. 一般處理程序只能用來處理用戶請求。

2 處理流程上

  1. 一般處理程序處理動態頁面的時候需要把整個頁面加載到服務器,接下來替換某些內容;處理圖片等內容時會直接返回響應報文。而aspx頁面大多使用了服務器控件,可以通過不加載整個頁面而更新頁面。

  2. 一般處理程序通過設置content-type設置返回的類型,可以返回靜態頁面,也可以返回圖片,字符串等內容。一般處理程序處理靜態數據比較合適,但是處理動態或頁面的時候就會變的比較麻煩。他需要先把頁面讀取到服務器,然後再替換讀取到的裏面的某項數據,比較麻煩。

  3. aspx是動態服務器頁面的意思,aspx頁面中也可以放置服務器控件,這樣後臺就可以通過服務器控件的Id進行控件的更新以及讀取操作,當需要更改某項內容時也不需要進行整個頁面的讀取操作,只需要更改某個控件的屬性即可。相對於一般處理程序而言,很是方便。

3 性能上

  1. 一般處理程序比aspx頁面處理程序要高一些。因爲在管道模型中,在第11和第12個事件之間,aspx頁面比一般處理程序多走了一個頁面生命週期。
  2. aspx頁面中有特殊ViewState狀態管理機制,而ViewSate的使用雖然方便,卻會佔有帶寬,影響性能(雖然我們能夠禁用某個頁面的ViewState屬性,但是在表單中還是會有簡單的ViewState存在,並不能完全禁用)。

4 應用範圍上:

  1. 在能滿足開發需求的基礎上,如果考慮開發效率,建議使用aspx;
  2. 如果考慮性能,建議使用一般處理程序。
希望本文能對您有所幫助感謝您的閱讀。如果有不當之處,還請您及時扶正。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章