我正在研究记录compplex系统状态的应用程序。 我必须将这些状态记录到xml文件(使用xml序列化)。 该文件用于重放记录的事件并对其进行分析。将复杂对象集合连续序列化到文件
上下文:
我的应用程序显示一组复杂的数据的(我们这个称为VIEW) 每个视图包含1个对象和对象的集合2(400项每个具有约20的属性)。
应用程序以固定的时间间隔记录数据的状态(两次记录之间的时间可能从5秒到60分钟不等),所有记录都存储在VIEWS集合中,我们将此VIEW集合保存到一个跟踪文件(使用xmlserializer并将我的对象集合序列化到文本编写器)
所有工作都很好,但是当文件达到20 Mo时,文件保存可能比2记录事件之间的时间花费更多时间(文件存储在网络上有时我们有时滞),我们希望优化它。
所以我的问题是:
有没有办法为对象追加到一个文件,而不需要加载和写入整个文件或方式来优化序列化到文件?
我们必须使用xml序列化,因为该文件必须可以通过代码(反序列化)由人类&读取。
您是否需要立即(或半实时地)使文件可用于序列化对象?如果没有,你可能会将序列化和文件I/O卸载到消息队列以进行并行/异步处理? – 5arx 2012-02-15 09:44:00
是的,序列化的对象应该是立即可用的(在系统关闭的情况下,最后一个知道状态必须在跟踪文件中可用) – Webmixer 2012-02-16 10:54:43
我不确定是否意味着它需要足够强大以足够恢复/不会丢失数据,或者在系统运行时序列化对象需要用于某些其他核心功能。如果您只需确保数据在发生灾难性系统事件时不会丢失,例如有人不小心关闭系统,我会倾向于使用排队。然后,您的活动系统只需要将状态转储到MSMQ或类似的位置,并且运行在不同盒子上的序列化程序代码可以执行资源匮乏的I/O操作。 – 5arx 2012-02-16 11:16:05