Asp.net
非鎖定程序內 ASP.NET 會話狀態儲存
我正在使用 ASP.NET 的程序內會話狀態儲存。它以獨占方式鎖定對會話的訪問,這意味著對同一會話的並發請求是按順序提供的。
我想刪除這個隱式排他鎖,這樣每個會話的多個請求可以同時處理。當然,我將在適用的情況下自己同步對會話狀態的訪問。
我正在使用Session State Providers 的 MSDN 文件來編寫我自己的會話狀態提供程序,這個 SO 問題將我指向這個將其作為 HTTP 模組實現的範常式式碼,但程式碼看起來非常複雜,只是為了刪除鎖。
我可能最終應該使用 ASP.NET 的記憶體來實現會話狀態,並停止使用內置會話,就像 Vivek 在這篇文章中描述的那樣,但現在我想如何刪除鎖定。
任何想法或範例實現?
不是您正在尋找的答案,但我認為即使有可能,改變 SessionState 以這種方式工作的方式也是一個糟糕的主意。
想想那些不得不維護你的程式碼的可憐人。Session 以這種方式序列化請求的事實意味著 ASP.NET 開發人員通常不需要過多擔心執行緒安全性。
此外,如果有人添加了一個碰巧使用 Session 的第三方組件,它會期望獲得關於鎖的通常保證——你會突然開始得到 Heisenbugs。
相反,測量性能並確定您需要同時處理請求的特定區域 - 我敢打賭,它們中的數量很少 - 並僅為所涉及的特定項目仔細實施您自己的鎖定機制 - 可能是您計劃最終使用的解決方案ASP.NET 記憶體。