ASP.Net中的緩存方案(不僅僅是Cache和Session)(我在CSDN上和別人的爭論)
我想設計一個完善的緩沖方案,用于在程序的各個地方緩沖數據。
應用程序級的Cache和Application大家都懂,就不說了
用戶會話級的Session也懂,也不說
我要說的是小一點作用范圍的。
線程級:在且僅在某個線程內有效的緩存。比如,可以定義一個數據庫連接對象,在線程級把它緩沖起來,那么,執行各種數據庫操作的時候,就不用擔心它會沖突,因為當前CPU只有一個線程在執行。我們對數據庫連接的一般做法都是在每個對象內部聲明一個數據庫連接或者作為屬性由對象外部傳進去,我覺得這種做法都不方便,如果能夠實現線程級,則可以在數據層各個數據對象內部直接使用這個被緩存了的數據庫連接,沒有沖突,也在最大限度上充分利用了數據庫連接。
請求級:在且僅在某一次請求的范圍內有效的緩存。有時候,對于數據庫的連接,我們都希望,在程序使用時連接一次數據庫,一直用到這次請求結束。這就是請求級啦。
我覺得,線程級比請求級更好,因為ASP.Net運行時是這樣處理的,收到一個請求,就從線程池分派一個線程去處理這個請求,同時也是從HttpApplication實例池中拿一個HttpApplication實例去處理,所以,一個線程可以被用于多次請求,一個HttpApplication實例,也可能被用于多個請求。
經過半個月來查找資料,我已經解決了絕大部分難題,做起來也挺麻煩的。
現在想聽聽大家的意見,看看大家有沒有更好的實現方法。
CSDN上的地址
http://community.csdn.net/Expert/TopicView3.asp?id=5147435
應用程序級的Cache和Application大家都懂,就不說了
用戶會話級的Session也懂,也不說
我要說的是小一點作用范圍的。
線程級:在且僅在某個線程內有效的緩存。比如,可以定義一個數據庫連接對象,在線程級把它緩沖起來,那么,執行各種數據庫操作的時候,就不用擔心它會沖突,因為當前CPU只有一個線程在執行。我們對數據庫連接的一般做法都是在每個對象內部聲明一個數據庫連接或者作為屬性由對象外部傳進去,我覺得這種做法都不方便,如果能夠實現線程級,則可以在數據層各個數據對象內部直接使用這個被緩存了的數據庫連接,沒有沖突,也在最大限度上充分利用了數據庫連接。
請求級:在且僅在某一次請求的范圍內有效的緩存。有時候,對于數據庫的連接,我們都希望,在程序使用時連接一次數據庫,一直用到這次請求結束。這就是請求級啦。
我覺得,線程級比請求級更好,因為ASP.Net運行時是這樣處理的,收到一個請求,就從線程池分派一個線程去處理這個請求,同時也是從HttpApplication實例池中拿一個HttpApplication實例去處理,所以,一個線程可以被用于多次請求,一個HttpApplication實例,也可能被用于多個請求。
經過半個月來查找資料,我已經解決了絕大部分難題,做起來也挺麻煩的。
現在想聽聽大家的意見,看看大家有沒有更好的實現方法。
CSDN上的地址
http://community.csdn.net/Expert/TopicView3.asp?id=5147435
我不相信神話,我只相信汗水!我不相信命運,我只相信雙手!

浙公網安備 33010602011771號