回答
Aspx使用具有複雜頁面生命週期和大量附加處理的全功能Web表單。 HttpHandler是純粹和輕量級的。它只有你實現的功能。
通過.aspx你真的指的是System.Web.UI.Page的一個實例,你可以在這個類的元信息中看到IHttpHandler的實現 - 換句話說(粗略地說)一個Page實例是 HttpHandler(這是相當重要的)加上一大堆東西給它的頁面行爲。
因此,不同之處在於,使用Page可以充分利用它提供的所有功能(視圖狀態,控制權,生命週期等),但必須承擔所有這些開銷無論你是否需要它,還是寫自己的實現,你可以將它作爲輕量級的,適合你選擇的目的,而不必花費自己的代價。因此
的HttpHandler特別適合當你因爲你沒有提供一個語義頁面響應不感興趣頁的支持 - 這是幾乎可以肯定在傳輸XML,JSON,圖像,或什麼,但HTML風格mark-錯誤與一頁。
在實踐中,我選擇了第三種選擇 - MVC - 大部分時間:)
請記住,當你的.aspx頁面中被編譯,它會變成從System.Web.UI.Page
派生的類直接或間接(通過從「代碼隱藏」類,又直接或間接地從Page
繼承了inheritting。
Page
實現IHttpHandler
,所以你永遠不使用IHttpHandler
。
,並在快速掃描成員李Page
的st對這個問題給出了自己的很好的答案。有很多事情要做,並提供很多派生類(即.aspx文件和代碼隱藏)。這就是在我們考慮這種方式之前,.aspx文件被解析爲使用大量「模板」代碼編寫代碼非常容易。
如果您編寫自己的處理函數,則會失去所有這些。失去它會使你的性能提高,但不如你想象的那麼多,如果它不被使用,很多都不會花費。事實上,如果你確實損失了所需的東西,那麼你自己的迴歸方法可能效率會降低。
如果編寫處理程序的自然方式是直接或間接地(方法調用)從代碼隱藏中的單個事件處理程序發生,並使用空的.aspx,那麼它可能會更清晰把它寫成一個處理程序來代替,在這種情況下。否則,你想堅持使用.aspx文件。
根據頁面/處理程序在做什麼,我使用普通處理程序而不是頁面提高了5%到15%的性能 - 它們通常是生成圖像,json等處理來自ajax的後臺任務的理想選擇請求或執行諸如來自圖像請求的訪客記錄之類的事情。
如果你寫出大量的html,處理程序有點痛苦 - 構建html字符串時出現錯誤的可能性往往超過性能優勢。
使用處理程序丟失的一件重要事情是使用ouput緩存聲明進行無憂緩存 - 當然,您可以通過編程方式自己連接它,但是我發現aspnet通常在緩存管理方面做得比任何其他任務都好我寫得很快。
- 1. HttpListener vs HttpHandler困境
- 2. ISAPI vs httphandler
- 3. 通用HttpHandler與普通的aspx頁面HttpHandler
- 4. aspx include vs ascx
- 5. WCF vs ASPX webmethods vs ASMX webmethods
- 6. ASPX/c#vs Java EE
- 7. ASP.NET的HttpHandler VS IIS處理程序
- 8. ViewState在HttpHandler中?
- 9. Web.config HttpHandler疼痛
- 10. HttpHandler沒有從.aspx正文觸發頁面
- 11. 你會如何爲Umbraco添加一個ASPX url的httphandler?
- 12. Httphandler版本Aspx代碼在寫入圖像文件後
- 13. Azure上的HttpHandler
- 14. HTTPHandler和svc
- 15. 使用的HttpHandler
- 16. ASP.NET下拉列表Codebehind vs ASPX頁面
- 17. Aspx代碼塊vs runat服務器
- 18. ASPX VS CSHTML做網格處理
- 19. 在HttpHandler中設置CacheProfile
- 20. 如何解決VS 2010 ASP.Net ReportViewer HttpHandler註冊錯誤?
- 21. BlogEngine.Net是否有一個用於所有.aspx請求的自定義HttpHandler?
- 22. 的HttpHandler在ASP.NET MVC 5.0
- 23. 如何調試ASP.net HTTPHandler
- 24. 的HttpHandler 101 FAIL
- 25. HttpHandler不改寫
- 26. Silverlight調用HttpHandler
- 27. C#,調試HTTPHandler
- 28. HttpHandler重定向
- 29. HttpHandler掛鉤* .svc請求
- 30. 服務器端緩存不支持HttpHandler
一個很好的問題,但幾乎肯定是一個騙局,它被廣泛討論和隨時googleable。 – annakata 2010-08-17 21:54:03