我正在研究記錄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