ASP.NET底層架構探索之HttpHandlers
2006/12/1 12:43:34
模塊是相當底層的,而且對每個來到ASP.net應用程序的請求都會被觸發.Http處理器更加的專注并處理映射到這個處理器上的請求.
  Http處理器需要實現的東西非常簡單,但是通過訪問HttpContext對象它可以變得非常強大.Http處理器通過實現一個非常簡單的IHttpHandler接口(或是它的異步版本,IHttpAsyncHandler),這個接口甚至只含有一個方法-ProcessRequest()-和一個屬性IsReusable.關鍵部分是ProcessRequest(),這個函數獲取一個HttpContext對象的實例作為參數.這個函數負責從頭到尾處理Web請求.
  單獨的,簡單的函數?太簡單了,對吧?好的,簡單的接口,但并不弱小!記住WebForm和WebService都是作為Http處理器實現的,所以在這個看上去簡單的接口中包裝了很強大的能力.關鍵是這樣一個事實,當一個請求來到Http處理器時,所有的ASP.NET的內部對象都被準備和設置好來處理請求了.主要的是HttpContext對象,提供所有相關的請求功能來接收輸入并輸出回Web服務器.
  對一個HTTP處理其來說所有的動作都在這個單獨的ProcessRequest()函數的調用中發生.這像下面所展示的這樣簡單:
  public void ProcessRequest(HttpContext context)
  {
  context.Response.Write("Hello World");
  }
  也可以像一個可以從HTML模板渲染出復雜表單的WebForm頁面引擎那么完整,復雜.通過這個簡單,但是強大的接口要做什么,完全取決于你的決定.
  因為Context對象對你是可用的,你可用訪問Request,Response,Session和Cache對象,所以你擁有所有ASP.NET請求的關鍵特性,可以獲得用戶提交的內容并返回你產生的內容給客戶端.記住HttpContext對象-它是你在整個ASP.NET請求的生命周期中的”朋友”.
  處理器的關鍵操作應該是將輸出寫入Response對象或者更具體一點,是Response對象的OutputStream.這個輸出是實際上被送回到客戶端的.在幕后,ISAPIWorkerRequest管理著將輸出流返回到ISAPI ecb的過程.WriteClient方法是實際產生IIS輸出的方法.
  
  圖7-ASP.NET請求管道通過一系列事件接口來轉發請求,提供了更大的靈活性.Application當請求到來并通過管道時作為一個載入Web應用并觸發事件的宿主容器.每個請求都沿著配置的Http過濾器和模塊的路徑走(譯注:原文為Http Filters And Modules,應該是指Http Module和Http Handler).過濾器可以檢查每個通過管道的請求,Handler允許實現應用程序邏輯或者像Web Form和WebService這樣的應用層接口.為了向應用提供輸入輸出,Context對象在這個處理過程中提供了特定于請求的的信息.
  WebForm使用一系列在框架中非常高層的接口來實現一個Http處理器,但是實際上WebForm的Render()方法簡單的以使用一個HtmlTextWriter對象將它的最終結果輸出到context.Response.OutputStream告終.所以非常夢幻的,終究即使是向WebForm這樣高級的工具也只是在Request和Response對象之上進行了抽象而已.
  到了這里你可能會疑惑在Http handler中你到底需要處理什么.既然WebForm提供了簡單可用的Http Handler實現,那么為什么需要考慮更底層的東西而放棄這擴展性呢?
  WebForm對于產生復雜的HTML頁面來說是非常強大的,業務層邏輯需要圖形布局工具和基于模塊的頁面.但是WebForm引擎做了一系列overhead intensive的任務.如果你想要做的是從系統中讀入一個文件并通過代碼將其返回的話,不通過WebForm框架直接返回文件會更有效率.如果你要做的是類似從數據庫中讀出圖片的工作,并不需要使用頁面框架-你不需要模板而且確定不需要Web頁面并從中捕捉用戶事件.
  沒有理由需要建立一個頁面對象和Session并捕捉頁面級別的事件-所有這些需要執行對你的任務沒有幫助的額外的代碼.
  所以自定義處理器更加有效率.處理器也可用來做WebFor

下一頁
返回列表
返回首頁 主站蜘蛛池模板: 久久久久久国产精品三级 | 五月婷婷开心综合| 波多野结衣免费视频观看| 国产乱人视频在线播放不卡| jizzjizzjizzjizz日本| 埋在老师腿间喝圣水| 免费国产人做人视频在线观看 | jazzjazz国产精品一区二区| 欧美一级在线免费观看| 你懂的免费视频| 91精品免费在线观看| 少妇高潮无套内谢| 亚洲中文字幕无码av永久 | 影音先锋在线_让看片永远陪伴| 亚洲天堂岛国片| 用我的手指搅乱我吧第五集| 国产大尺度吃奶无遮无挡| s级爆乳玩具酱国产vip皮裤| 新疆女人啪啪毛片| 亚洲国产精品无码久久一区二区| 男生gay私视频洗澡| 哆啪啪免费视频| 69堂午夜精品视频在线| 国色天香网在线| xxx国产精品xxx| 日韩激情淫片免费看| 伊人免费在线观看| 精品视频久久久| 国产∨亚洲v天堂无码久久久| 黄色大片视频网站| 国产精品久久国产三级国不卡顿| 一级特黄aaa大片| 日本三级在线观看免费| 久久精品国产清自在天天线| 激情网站免费看| 免费看片A级毛片免费看| 美女女女女女女bbbbbb毛片| 国产一级淫片免费播放| 青青青国产精品一区二区| 国产成人精品无码一区二区老年人| 男人一进一出桶女人视频|