在我的Windows Mobile(.NET Compact Framework)应用程序中,我使用一个大数组来存储应用程序的主数据。这是可能有数百个对象的数据集。每个对象有大约10个左右的属性和两个自身的数组,每个对象有大约25个其他对象,每个对象有大约5个属性。
要将此阵列保存在移动设备上,我只需序列化整个阵列。这在大多数情况下运作良好,而且非常非常容易。
然而,在我们的测试案例中,我们总是只处理少数几个对象,最多约50到75个。但是我们的客户端已经遇到过用户拥有数百个这些对象的情况,最多可达1000个。在这些情况下,序列化很慢,可能需要一分钟。
实际问题是在保存整个阵列时,实际上只有几个对象实际发生了变化。所以基本流程是这样的:
如果不经常进行保存,那么通常不会出现问题,但是在保存数据的几个中间步骤中。这是为了确保所有数据都保持不变并且不会发生数据丢失(例如,当电池耗尽时)。
我该如何解决这个问题?
答案 0 :(得分:1)
所以要明确,请确保我理解你的情景:
答案其实很简单。根据您的操作方式,这是完全预期的行为。为什么要将此机制用于数据存储,尤其是对于大型,频繁更改的项目?这是一个糟糕的设计决策的典型例子。当属性发生变化时,您应该仅更改存储中的该属性,并且序列化数组不太适合这种情况。
你应该使用一个真正的数据库引擎,无论是RDBMS还是对象数据库,还有一些正在做的事情,而不是写入存储介质。如果您需要将数据作为数组传输到PC / Server,那很好 - 创建一个从商店中提取并将其放入数组的机制。