2010-12-15 46 views
0

我必須處理一個需要大約2-3分鐘才能加載的類。該對象位於silverlight/ASP/WCF項目的服務器端。一旦加載,該對象將包含一個5 000 000個較小對象的列表,將用於執行一些計算。Silverlight/ASP.NET/WCF項目中的大對象?

用戶不介意在應用程序加載時等待2到3分鐘,但他們不想在每次計算時再等待。

我希望您對我的選項有所瞭解。

選項A:將大對象保留在會話變量中。有些人聲稱會話變量是毒藥......特別是當用於大對象時。這真的很糟嗎?

選項B:裝載大物件時,服務器開始,然後找到一種方式來共享或複製會話之間的對象

選項C(這一個會工作......但它並不完美):創建第二個對象將從我耗時的課程中複製5 000 000個對象,然後將其發送給客戶端。然而,這種解決方案並不完美,因爲這500萬個對象是不應該在客戶端「按現狀」訪問的合理數據。

+0

您能否提供任何線索,爲什麼將5,000,000個對象複製到客戶端是有意義的?你不能在數據已經存在的服務器上執行計算嗎? – 2010-12-15 01:13:52

+0

在服務器端執行計算是我想要做的......這就是爲什麼我寧願使用選項A或B.選項C更像是一種解決方法。 – 2010-12-15 03:08:05

+0

您在服務器上發送的數據可以加密..但是如果您將數據存儲在Cookie中,則需要序列化您的對象以及Cookie的空間有限.. – 2010-12-15 03:16:29

回答

1

你給出了三種方法,第一種方法和第二種方法,使用手工製作,我認爲他們不是好主意。

我建議,如果你有很大的記憶,你可以將類更改爲靜態類。因爲靜態類不是實例。

或 您可以使用緩存來緩存實例。

+0

我真的很喜歡靜態類解決方案!這並不涉及我的類的很多更改(將其更改爲靜態/使其線程安全) – 2010-12-15 03:38:14