2010-08-17 62 views
5

使用HTTPHandler和.aspx有什麼優勢?它是否具有相同的功能,重量更輕,速度更快?HTTPHandler vs .aspx

有什麼缺點?

+0

一個很好的問題,但幾乎肯定是一個騙局,它被廣泛討論和隨時googleable。 – annakata 2010-08-17 21:54:03

回答

2

Aspx使用具有複雜頁面生命週期和大量附加處理的全功能Web表單。 HttpHandler是純粹和輕量級的。它只有你實現的功能。

0

通過.aspx你真的指的是System.Web.UI.Page的一個實例,你可以在這個類的元信息中看到IHttpHandler的實現 - 換句話說(粗略地說)一個Page實例 HttpHandler(這是相當重要的)加上一大堆東西給它的頁面行爲。

因此,不同之處在於,使用Page可以充分利用它提供的所有功能(視圖狀態,控制權,生命週期等),但必須承擔所有這些開銷無論你是否需要它,還是寫自己的實現,你可以將它作爲輕量級的,適合你選擇的目的,而不必花費自己的代價。因此

的HttpHandler特別適合當你因爲你沒有提供一個語義頁面響應不感興趣頁的支持 - 這是幾乎可以肯定在傳輸XML,JSON,圖像,或什麼,但HTML風格mark-錯誤與一頁。

在實踐中,我選擇了第三種選擇 - MVC - 大部分時間:)

1

請記住,當你的.aspx頁面中被編譯,它會變成從System.Web.UI.Page派生的類直接或間接(通過從「代碼隱藏」類,又直接或間接地從Page繼承了inheritting。

Page實現IHttpHandler,所以你永遠不使用IHttpHandler

,並在快速掃描成員李Page的st對這個問題給出了自己的很好的答案。有很多事情要做,並提供很多派生類(即.aspx文件和代碼隱藏)。這就是在我們考慮這種方式之前,.aspx文件被解析爲使用大量「模板」代碼編寫代碼非常容易。

如果您編寫自己的處理函數,則會失去所有這些。失去它會使你的性能提高,但不如你想象的那麼多,如果它不被使用,很多都不會花費。事實上,如果你確實損失了所需的東西,那麼你自己的迴歸方法可能效率會降低。

如果編寫處理程序的自然方式是直接或間接地(方法調用)從代碼隱藏中的單個事件處理程序發生,並使用空的.aspx,那麼它可能會更清晰把它寫成一個處理程序來代替,在這種情況下。否則,你想堅持使用.aspx文件。

0

根據頁面/處理程序在做什麼,我使用普通處理程序而不是頁面提高了5%到15%的性能 - 它們通常是生成圖像,json等處理來自ajax的後臺任務的理想選擇請求或執行諸如來自圖像請求的訪客記錄之類的事情。

如果你寫出大量的html,處理程序有點痛苦 - 構建html字符串時出現錯誤的可能性往往超過性能優勢。

使用處理程序丟失的一件重要事情是使用ouput緩存聲明進行無憂緩存 - 當然,您可以通過編程方式自己連接它,但是我發現aspnet通常在緩存管理方面做得比任何其他任務都好我寫得很快。