2014-01-29 58 views
0

我正在使用ASP.NET,我想在我的控制器中加載一次大對象(由用戶指定),然後在我的視圖中使用它。 我雖然關於一個靜態屬性,但我發現它的一些問題。 請參閱:Is it a bad idea to use a large static variable?如何在使用ASP .NET MVC的方法之間正確共享控制器中的對象?

我不熟悉這種語言,我不知道如何在每個用戶的不同方法之間正確共享同一個對象。你能告訴我該怎麼做嗎?你知道單身人士是否可以成爲解決方案嗎?

+0

你知道單身是什麼嗎?何時/爲什麼你應該應用它? – SamekaTV

回答

1

如果這個大對象對每個用戶都不同,單身人士在這裏不會幫你。

不知道所有的細節,我想也許是說你最好的選擇是將其存儲在Session對象,

HttpContext.Current.Session["bigObject"] = bigObject; 

根據大小&流量,這可能有性能問題,所以我d建議您閱讀使用會話的優缺點

0

如果您想要爲下一個同時請求使用某些內容,請使用TempData - 這是一個存儲區,您可以在其中存儲僅用於按照要求。也就是說,在下一個請求完成後,放入TempData的任何內容都會被丟棄。

如果要保留特定於用戶的信息,請參閱Session。使用會話時,您將有超時,所以經過一段時間後,會話中存儲的數據將會丟失。您可以將此值配置爲更大的值。除此之外,當您訪問Web服務器時,維護會話將會成爲問題,可能您可能需要去管理SQL Server或其他商店中的會話。

或者,您可以使用ASP.Net MVC中的Runtime Cache對象來保存所有常用數據。緩存數據可以被快速訪問,並且我們還有其他好處,比如過期緩存等。您可以在用戶之間共享此緩存對象,也可以爲不同用戶維護不同的緩存對象,這完全取決於您的邏輯。在webfarms的情況下,你有分佈式緩存服務器,如redis,Azure Cache服務等,你可以使用它們。

相關問題