2011-01-31 49 views
4

我正在閱讀ASP.NET 4 Unleashed,我來到這句話。 「當會話狀態存儲在進程中時,會將其存儲在特定的Web服務器上,換句話說,您不能在Web場中使用進程內會話狀態。」服務器場中的InProc會話使用情況

Ooops。我正在構建一個使用並依賴於在會話中存儲字典的Web應用程序。現在我知道在使用會話時字典序列化存在一些問題,但在InProc會話中,沒有序列化,所以我認爲我會好的。但是現在我想知道:當我去申請我的申請時,我會有什麼討厭的驚喜嗎?

謝謝。

回答

5

首先,如果您的應用在單個服務器上運行(並且可能在共享主機上運行),則進程內會話可以,並且可能是唯一的出路。

,如果你有一個以上的服務器(Web農場),甚至超過一個進程在進程內服務的網站(Web園)在同一臺服務器上是行不通的除非您使用粘性會話:您的負載均衡器需要配置爲在會話啓動後向同一服務器發送請求。

不要擔心字典序列化,會話處理必須能夠對它進行排序,無論是狀態服務器還是SQL Server。

然而,一般情況下,任何對進程邊界內的進程內狀態或狀態的依賴被認爲是不好的設計,並且非常不鼓勵。

+0

原因主要在於可擴展性,如果您的要求發生變化,並且您必須獲得多臺服務器,那麼您可能會遇到麻煩並可能最終重新設計。另外設計無狀態的web應用程序通常會產生更好的代碼。如果有這樣一個詞,通常不難實現`無國籍狀態':) – Aliostad 2011-02-01 00:13:20

相關問題