【问题标题】:Large object in Silverlight / ASP.NET / WCF project?Silverlight / ASP.NET / WCF 项目中的大对象?
【发布时间】:2010-12-15 01:00:20
【问题描述】:

我必须处理一个加载大约需要 2-3 分钟的课程。此对象位于 silverlight / ASP / WCF 项目的服务器端。加载后,此对象将包含一个包含 5 000 000 个较小对象的列表,这些对象将用于执行某些计算。

用户不介意在应用程序加载时等待 2 或 3 分钟,但他们不想在每次计算时再次等待。

我希望您能就我的选择提供意见。

选项 A:将大对象保存在会话变量中。有些人声称会话变量是有毒的......尤其是在与大型对象一起使用时。真的那么糟糕吗?

选项B:在服务器启动时加载大对象,然后想办法在会话之间共享或复制这个对象

选项 C(这个可行……但它并不完美):创建第二个对象,该对象将从我的耗时类中复制 5 000 000 个对象,然后将其发送到客户端。但是,此解决方案并不完美,因为这 5 000 000 个对象是敏感数据,不应在客户端“按原样”访问。

【问题讨论】:

  • 您能否提供任何线索来说明为什么将 5,000,000 个对象复制到客户端是有意义的?不能在数据已经存在的服务器上进行计算吗?
  • 在服务器端执行计算是我想做的……这就是为什么我宁愿使用选项 A 或 B。选项 C 更像是一种解决方法。
  • 您在服务器上发送的数据可以被加密..但是如果您将数据存储在cookie中,您还需要序列化您的对象...并且cookie的空间有限..

标签: asp.net silverlight wcf session-variables


【解决方案1】:

你给出了三种方法,第一种方法和第二种方法,使用视野,我认为它们不是好主意。

我建议,如果你有大内存,你可以将类更改为静态类。因为静态类没有实例化它。

或 您可以使用缓存来缓存实例。

【讨论】:

  • 我非常喜欢静态类解决方案!这并不涉及对我的类进行大量更改(将其更改为静态/使其线程安全)
猜你喜欢
  • 2023-03-12
  • 1970-01-01
  • 2011-03-22
  • 2013-04-12
  • 1970-01-01
  • 2011-04-06
  • 2010-12-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多