大家在用HttpHandler的時候,一般都會有兩個大的疑問(當然,前提是你有鑽研精神的話,呵呵)
1. IsReusable到底什麼意思?
老實說,這個屬性很多人都感興趣,但搞懂的人確實不多。MSDN中的介紹也是不知所以然。
獲取一個值,該值指示其他請求是否可以使用 IHttpHandler 實例。該屬性默認為false
我來這麼說吧,首先我們為什麼使用自定義的Handler呢?簡單的說,我們是希望能接管掉某些請求, 對吧?最常見的應用如下
對圖片進行處理。例如所有圖片都輸出一個水印。或者防止盜鏈到設計
添加一些特殊的擴展名。例如,我的網站能不能有一個後綴名為chenxizhang的網頁呢?(這當然是一 個比喻,事實上一般沒有必要這麼做)
知道上述的需求之後,我們再來看一下後台的設計。HttpHandler其實就是實現了IHttpHandler接口的 一個類型,它要工作,就必須通過 ASP.NET所提供的一些所謂的Factory去創建實例,然後調用它的 ProcessRequest方法。其實就這麼簡單
因為創建對象實例在服務器肯定是需要占用資源的,那麼我們就勢必要考慮這些請求能不能在一定程 序上去復用。這就是IsReusable的初衷
事實上,我們對這種復用並不會陌生。平常我們就知道對象池和連接池的技術。Handler的Reuse也是 一個池的概念。
好了,說了這麼一堆的概念,我們來講一講該屬性設置為true和設置為false的區別。
設置為true,則通常情況下,就創建一次實例
設置為false,則每次請求都需要創建實例