在最近的Stackoverflow podcast (#59)中,Jeff Atwood提到Stackoverflow有一些「共享狀態」。我理解共享狀態的一般概念,但在ASP.NET MVC應用程序(如Stackoverflow)中,共享狀態究竟是什麼?什麼是ASP.NET MVC應用程序中的共享狀態?
具體來說,我想了解以下內容:
- 是什麼樣子?你如何在荒野中發現它?
- 它給系統帶來了什麼限制?
- 你如何擺脫它?
- 如果這麼糟糕,爲什麼有人 將它包含在他們的設計中?
在最近的Stackoverflow podcast (#59)中,Jeff Atwood提到Stackoverflow有一些「共享狀態」。我理解共享狀態的一般概念,但在ASP.NET MVC應用程序(如Stackoverflow)中,共享狀態究竟是什麼?什麼是ASP.NET MVC應用程序中的共享狀態?
具體來說,我想了解以下內容:
在聽完最新的Stackoverflow podcast之後,我已經想出了Jeff所說的共享狀態。
1.它看起來像什麼?你如何在荒野中發現它?
傑夫指的是在ASP.NET MVC中使用Session變量。
2.它給系統帶來了什麼限制?
如果配置不正確,使用會話變量可以將用戶綁定到特定的Web服務器。如果用戶在請求之間在不同的Web服務器之間跳躍,那麼Session變量中的數據將不可用。
3.你如何擺脫它?
通過將Session變量保存到可從所有Web服務器訪問的數據庫中,您可以擺脫共享狀態。 ASP.NET提供了一個將Session變量免費保存到數據庫的選項,但由於某些原因,Jeff不願使用此功能。他提到他喜歡刪除代碼,但他決定推出自己的機制來將會話狀態持久化到數據庫。
4.如果這麼糟糕,爲什麼有人將它包含在他們的設計中?
因爲它在編碼時很正確,而且很簡單。
alt text http://www.codeproject.com/KB/mobile/DeepCast/easy-button.jpg