Asp.net
使用 ASP.NET 會話狀態伺服器(而不是 InProc)的優缺點?
在我開始使用會話狀態伺服器以使我的應用程序中的會話狀態與 InProc 狀態相比更加健壯之前,我想找到一個優缺點列表進行評估。
更新 1:還有關於生存的應用程序池回收嗎?
更新 2:會話的壽命和結束時間如何?
以下是 Rob Howard 的ASP.NET 會話狀態文章中對您的三個選項的優缺點的規範分析:
- 進行中。程序中的性能最好,因為會話狀態記憶體保存在 ASP.NET 程序中。對於託管在單個伺服器上的 Web 應用程序,保證使用者被重定向到正確伺服器的應用程序,或者當會話狀態數據不重要時(從某種意義上說,它可以重新構造或重新填充) ,這是要選擇的模式。
- 程序外。當性能很重要但您不能保證使用者將從哪個伺服器請求應用程序時,最好使用此模式。使用程序外模式,您可以獲得從記憶體讀取的性能以及管理所有伺服器狀態的單獨程序的可靠性。
- SQL 伺服器。當數據的可靠性對應用程序的穩定性至關重要時,最好使用此模式,因為可以對數據庫進行集群以應對故障情況。性能不如程序外快,但代價是更高級別的可靠性。
程序外(又名“StateServer”)和 SQL-Server 選項都可以在 Web 應用程序重新啟動(包括應用程序池循環)後保留下來,並且都使會話數據可用於集群/場中的多個伺服器。
最後,它可能不言而喻,但基本的程序內設置是最容易配置的,這在許多環境中是一個有意義的“專業人士”。
Tim Sneath 的ASP.NET 會話狀態:體系結構和性能注意事項添加了一些附加資訊,有關會話狀態模式的 MSDN 主題是一個可靠的最新資源。