2010-12-15 62 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