2011-10-30 129 views
5

我已經被問了幾次以下的問題,並覺得我可以有一個更好的答案,所以我轉發它在這裏希望找到更多的資源,博客書籍或編寫可伸縮MVC3 C#代碼的指針。如果您有任何關於編寫跨多臺服務器託管的更好性能代碼的指示器,我將不勝感激。爲了爭論起見,我們可以說,代碼預計每天會有10-20K次點擊。高流量的ASP.NET MVC編碼考慮

問題: 在編寫分佈在多臺服務器上的可伸縮代碼時,您會考慮哪些編碼問題?

我的直覺告訴我答案在於處理會話。在過去的幾年中,我的背景一直是編寫服務和表單應用程序,而不是Web應用程序,所以我正在尋找可以幫助我進行特定於Web應用程序的開發的信息,尤其是針對C#MVC3的信息。任何博客或書籍,你建議我一定會研究!

+2

就我個人而言,我總是儘量避免使用會話,因爲在多個服務器上運行應用程序時,它會讓您頭痛不已。如果您的應用中沒有使用會話,則可以在web.config中將其關閉,以及進行小幅度的性能提升! –

回答

2

實現可伸縮Web應用程序的規則之一是它們是無狀態的。會話是應該拋出等式的第一件事,因爲這正是使應用程序有狀態的原因。如果你有一個完全無狀態的應用程序,當流量增加並且應用程序能夠處理它時,你可以拋出硬件。因此,首先在web.config中放入以下行:

<system.web> 
    <sessionState mode="Off" /> 
    ... 
</system.web> 

現在問題出在數據層上,因爲這是狀態所在。所以爲了提高性能並限制對這個節點的請求數量就是使用緩存。儘可能多地緩存數據。最好將此緩存存儲在不同於Web服務器的機器上。用於進行緩存的專用機器。

+0

@xanatos - MVC不使用ViewState –

+0

這是很好的輸入,感謝您的迴應。你能推薦任何有助於展示這些緩存技術的閱讀材料嗎?最好是C#MVC傾向於儘可能但我準備好了任何東西! :) 再次感謝。 – likestoski

+0

@likestoski,這裏是對輸出緩存的介紹:http://www.asp.net/mvc/tutorials/improving-performance-with-output-caching-cs另外這個用於部分頁面輸出緩存:http:// davidhayden .com/blog/dave/archive/2011/01/25/PartialPageOutputCachingASPNETMVC3.aspx對於數據緩存,這裏有一系列不錯的帖子:http://stevescodingblog.co.uk/tag/memorycache/ –