用winform的方式操縱webform--淺談IHttpHandler-Windows開發-.NE

來源:互聯網
上載者:User
好久以前看過一篇有關自訂IHttpHandler的文章,當時就想寫點自己的體會,一直沒空。今天就說說這個吧。首先談談asp.net的一些參數傳遞和頁面定向的方式
第一,asp.net是用Page.Navigate()調用新頁面的URL。Page.Navigate()向瀏覽器返回了一個http狀態代碼302,使得瀏覽器向server請求那個新的URL。這種導航方法導致每次客戶請求都需兩次在client和server之間往返。第二,任何要傳遞到新頁面的資訊都需作為URL的參數或儲存在Session中或儲存在資料庫中以便新頁面得到這些資訊。傳統的asp開發人員很習慣這種做法,但其他的web編程人員則有一些更進階的方法。但是很明顯的這兩個頁面是有依賴性的,而依賴性是編譯器捕捉不到的也是不容易在設計階段建模的。所以在debug時,參數是否被正確的傳遞就只有我們自己檢查了。再有傳統的資料傳遞方式有可能會暴露一些關鍵的資料。更為關鍵的是這使得物件導向的設計變得很複雜。當然我並沒有否定傳統的方式,我這是在強調asp.net缺乏對伺服器端的多頁面之間的通訊的支援。
但是我們可以自訂httphandler來擴充這種支援。
開始之前,我們先來看一下asp.net怎樣處理頁面請求,asp.net是通過System.Web.UI.PageHandlerFactory類的執行個體來處理。PageHandlerFactory依賴於另一個類PageParser。一個頁面在第一次請求時PageParser把它編譯成一個真正的.Net的類並cache已編譯的執行個體
HttpApplication
    |
    |1.GetHandler()
    |
PageHandlerFactory
    |
    |2.GetCompiledPageInstance()
    |
PageParser
我們要做的第一步是override由asp.net提供的頁面產生過程。所以我們必須建立一個類實現IHttpHandlerFactory介面,我們需要實現的只有兩個方法,一個是GetHandler(),它是在一個HTTP Request開始時被調用;另一個是ReleaseHandler(),調用可以讓IHttpHandlerfactory進行清理工作。
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.