Asp.net-Mvc

使 ASP.NET MVC 應用程序 Web Farm Ready

  • January 27, 2015

準備好 ASP.NET MVC 應用程序 web-farm 的最有效方法是什麼。

最重要的是共享目前使用者的資訊(上下文)和(不那麼重要)記憶體對象,例如查找項目(州、街道類型、縣等)。

我聽說過/閱讀過 MemCache,但還沒有看到關於如何實現和測試它的簡單適用方式(文件)。

請求上下文

任何到達 Web 場的請求都由可用的 IIS 伺服器提供服務。上下文在那裡創建,整個請求由同一台伺服器提供服務。所以上下文不應該是一個問題。請求是一個無狀態的執行管道,因此它不需要以任何形式或形式與其他伺服器共享數據。它將由同一台機器從頭到尾提供服務。

使用者資訊從 cookie 中讀取,並由為請求提供服務的伺服器處理。這取決於您是否在某處記憶體完整的使用者對象。

會話

如果您使用TempData字典,您應該知道它儲存在Session字典中。在伺服器場中,這意味著您應該使用 InProc 會話以外的其他方式,因為它們不會在整個場的 IIS 伺服器之間共享。您應該配置使用數據庫或其他(狀態伺服器等)的其他會話管理器。

記憶體

當談到記憶體時,情況就不同了。為了使其盡可能高效,還應提供記憶體。預設情況下不是。但是查看記憶體幾乎不意味著當沒有記憶體時,它應該被讀取並儲存在記憶體中。因此,如果一個特定的伺服器場伺服器沒有一些記憶體對象,它會創建它。隨著時間的推移,它們都會記憶體一些共享的公共使用數據。

或者…您可以使用memcached之類的庫(正如​​您提到的那樣)並利用共享記憶體。網上有幾個例子如何使用它。

但是這些解決方案都會帶來一些額外的成本(比如網路和第三程序處理和數據獲取等),如果沒有別的。因此,預設記憶體是最快的,如果您明確需要共享記憶體,請選擇一個。除非真的有必要,否則不要共享記憶體。

引用自:https://stackoverflow.com/questions/3463191