【发布时间】:2010-11-03 20:20:12
【问题描述】:
基本上,我有一个非常大的列表,其中包含相对较大的字典。
所以基本上,我有一个非常大的内存集合。
然后我手动将此集合序列化为 XML,并通过 http 发送。不用说,XML 太大了,有时太大了,我什至在尝试发送它之前就得到了 OutOfMemory 异常。
在 .NET 中,我将如何计算潜在的内存使用量。 例如,在这种情况下,我必须通过在一次。
如何有效地即时计算每个“块”的大小。我不想选择任意数字,例如“一次处理 100 个项目”, 我想知道,根据具体情况,每个块应该有多大。
干杯
更新
尽管@Jacob 为这个特定问题提供了最佳解决方案,但应用程序的概念结构本身存在缺陷。
确实,解决方案是执行消息的一部分,以便在使用集合时计算消息的潜在大小。
然后,您将每个可接受大小的单元一个接一个地发送出去。
但这只是一个技巧。真正的解决方案是要么找到一种不传递大消息的方法,要么完全使用完全不同的协议。
有一个interesting post on the subject here,不过如果你想使用 SOAP,但我决定想办法解决发送这么多数据的问题。
【问题讨论】:
-
您是否考虑过一种比 XML 更简洁的发送方式?或者 XML 是一成不变的
-
嘿,克里斯,是的,我现在有。但是,无论我压缩多少,我可能仍然需要分块发送它。我对如何解决这个问题更加好奇和担心。虽然欢呼