2008-11-20 73 views
0

需要詢問一些幫助。如何在Asp.net 2.0中的不同範圍內存儲對象

我有網絡應用程序運行在網絡2.0。
我想問什麼存儲(緩存,會話,文件)我應該用我的對象,因爲他們有不同的使用範圍。可以分成幾組:
1)與訪問者直接相關的對象(例如認證後接收的訪問者的詳細信息)
2)用於每個訪問者的對象,所以它的應用範圍(一些初始化數據,普通數據)

大多數這些對象從Web服務獲取數據,這是昂貴的。

因此,考慮到速度,內存,可訪問性以及我應該注意的其他因素,我的最佳選擇是什麼。

任何幫助最受歡迎。謝謝,X.

回答

2
  1. 直接關係到遊客的對象應存放在Session雖然過度使用Session和衆多用戶的可導致可伸縮性問題。

  2. 對於每個訪問者共享的對象應存儲在Cache中,以便它們如果不經常訪問以避免內存被回收(更不用說增加依賴關係),它們將超出範圍。在您知道一個對象必須立即可訪問的場景中,無論上次訪問它的時間是多少,那麼您應該將該對象存儲在Application中。

1

第1項 - 會話很可能是最好的,因爲它是每個用戶,但是,由於存在縮放問題以及Web場中的注意事項,務必限制項目數量。

項目2 - 根據您的需要,這可能是要添加的緩存或應用程序級別的項目,具體取決於過期的需要等。關鍵區別在於緩存有過期時間和使用項目可以將其刪除,應用程序是爲了永遠呆在那裏的東西。

總的來說,在一個Web應用程序中,我強烈建議AGAINST文件,因爲您必須擔心線程安全。

0

每個訪問者相對的對象應存儲在Session中。這對每個訪問者來說都是獨一無二的,但往往會頻繁出現衝突,當您轉移到多服務器環境時,這也會變得很糟糕。

相對於應用程序整體的對象應存儲在ASP.NET緩存中。

+0

會話的清空高度依賴於會話中的項目大小,系統上的用戶數量以及整體內存負載。 – 2008-11-20 21:51:03