IHttpHandler的学习(0)
本片文章轉自網絡
? ? ? 問題1:什么是HttpHandler?(Handler:處理者;那就是對Http請求的處理拉)
問題2:什么是HttpModule?
問題3:什么時候應該使用HttpHandler什么時候使用HttpModule?
答案1:HttpHandler,Http請求的處理者,例如ScriptHandler、WebServiceHandler,IHttpHandler的實現都是為了處理某一類的請求。如ScriptHandler負責處理對腳本的請求。
答案2:HttpModule,Http模塊。實際上就是那19個標準事件的處理者,或者說19個標準事件的訂閱者,比如OutputCacheModule,SessionStateModule。詳細可以到在這篇文章里面看到http://www.cnblogs.com/kissdodog/p/3527922.html。
一、HttpHandler的職責
1、由于HTTP請求有很多種請求類型,比如請求aspx、html、jpg等等。因此,僅僅由HttpApplication直接處理請求時很臃腫的,而且不利于擴展。因此Asp.net采用了抽象工廠模式來處理這些請求。Asp.net在web.config的架構中,允許我們制定某些請求映射到一個HttpHandlerFactory(就是可以在config中配置請求的信息)。
<!--適用于IIS6的配置--> <system.web><httpHandlers><add path="*.aspx" verb="*" type="MyMVC.MvcPageHandlerFactory, MyMVC" validate="true" /></httpHandlers> </system.web><!--適用于IIS7的配置(集成模式)--> <system.webServer><handlers><add name="MvcPageHandlerFactory" verb="*" path="*.aspx" type="MyMVC.MvcPageHandlerFactory, MyMVC" preCondition="integratedMode" /></handlers> </system.webServer>所以,我們應該這樣理解HttpHanlder:一個HttpHanlder用于響應一類的請求,為一類的請求生成響應結果。
我們經常用到的HttpHanlder有哪些??
1. aspx頁面。
2. asmx服務文件。
3. ashx文件(一般處理程序)。
4. 實現IHttpHandler接口的自定義類型。
我們通常使用HttpHanlder做什么??
| HttpHanlder類型 | 實現目標 |
| aspx頁面 | 響應aspx的請求,輸出HTML結果 |
| asmx服務文件 | 響應服務調用 |
| ashx文件(一般處理程序) | 實現簡單的AJAX響應 |
| 實現IHttpHandler接口的自定義類 | 響應什么擴展名的請求? |
二、HttpModule的職責
有時候有些頁面需要一些相同的檢查功能,比如身份驗證。明顯使用HttpHandler是不方便的,因為不是所有的頁面都需要去調用那些相同的功能。
HttpModule的設計正是提供了一個靈活的方法解決這種功能重用的問題,它采用事件(觀察者)的設計模式,將某些HttpHandler都需要的功能抽取出來,形成不同的觀察者類型,這些觀察者類型可以編譯成類庫形式,供多個網站共用。為了讓ASP.NET管線更靈活,ASP.NET允許我們再web.config中自由配置需要的HttpModule。
配置只是告訴ASP.NET,這些HttpModule需要運行起來,可能會用得著。
我們用HttpModule做什么事情??
1.?修改某些請求(例如前面的示例修改了響應頭)。
2.?檢查檢查請求(例如身份認證檢查)。
HttpModule能處理哪些請求呢??
1. 默認是全部進入ASP.NET的請求。
2. 如果只需要處理部分請求,那么請自行判斷。
三、總結
HttpHandler相當于一條水管,HttpModule相當于一小節水管。HttpHandler有很多條,一條流油,一條流水等等。HttpModule相當于一小截,需要過濾的長水管里面都可以裝上。
轉載于:https://www.cnblogs.com/ZkbFighting/p/9022201.html
總結
以上是生活随笔為你收集整理的IHttpHandler的学习(0)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 华盛证券港股钱提不出来
- 下一篇: 订阅号助手App发布 手机也能管理公众号