2010-06-07 39 views
0

當構建一個高可用性目標的ASP.NET MVC應用程序時,如果沒有可用的狀態服務器,在SQL Server上保持會話狀態是一種很好的做法嗎?高可用性ASP.NET MVC

回答

0

這裏的關鍵點是你有2-3個web服務器,就像你在Craigs評論中提到的那樣。

一種方法是使用SQL-server sessionstate,它有自己的問題http://idunno.org/articles/277.aspx

如果你有這個SQL-Server,我會很小心,因爲sessionstate的數據庫會對它施加很大的負載。每個請求都會寫入數據庫。

我們使用2個Web服務器和一個具有粘性會話的Loadbalancer。如果您的第一個請求在服務器1中結束,那麼您的所有請求都由服務器1處理。(它有點複雜,但您明白了。)

這可能不是最好的解決方案,但至少在我們的網站(其用戶通常停留20-30分鐘的商店)效果很好。我們只使用一點SessionState,並擁有ProfileSystem存儲的大部分用戶特定內容。但我猜如果請求到不同的服務器,ProfileSystem也會失敗。

0

我建議AppFabric Caching(f.k.a.速度)來代替。

+0

我需要使用一個現有的平臺2-3 Web服務器和一個SQL服務器。 – Jay 2010-06-07 19:44:52

+0

也許你應該更新你的問題來包含你的所有需求。 – 2010-06-07 20:49:54

+0

但是,順便提一下,AppFabric Caching被設計爲可以與多個Web服務器一起工作,並且它比SQL緩存和粘滯會話都快,所以我不確定我看到了您的反對意見。 – 2010-06-08 13:00:32