这更像是一个设计问题,我正在寻找一个好的方法:
我有一个包含几个属性的对象(一些Integers
和一个byte[] array
)。
我正在使用BinaryFormatter
序列化我的对象 - 我在任何给定时间都持有List<T>
个所有对象。
List<T>
并将所有内容保存到文件中。我的问题是:如果系统出现故障,我在List<T>
中保留的对象显然会丢失,因为我只在应用程序正常关闭时序列化List<T>
。
我不是在考虑反序列化&amp; 序列化每次我想将一个对象插入我的列表,因为这将非常昂贵。
我想到的解决方案是保存一个带有BLOB
列的本地数据库,对象将序列化到该列,但我不太确定这种方法。
任何想法都会受到赞赏!!
答案 0 :(得分:1)
仅在应用程序启动时反序列化。
如果要确保在应用程序崩溃时没有丢失任何项目,则每次添加新项目时都需要序列化(或使用UnhandledException事件)。
如果没有,我会在添加新项目时使用后台线程序列化列表,并在退出应用程序时使用主线程序列化。
我想到的解决方案是保存一个带有BLOB列的本地数据库,对象将序列化到该列,但我不太确定这种方法。
我认为使用数据库没有任何好处。它实际上比将所有内容序列化为文件要慢。
答案 1 :(得分:0)
我会添加简单的ORM
,让我们说Sqlite数据库,并避免标准的二进制序列化。我个人不喜欢它,因为在应用于之前序列化的对象的更改(如添加/删除属性,更改类型,函数参数或其序列)将导致deserialization
失败。换句话说,它不是可扩展的, imo 。
答案 2 :(得分:0)
我的方法是binlogging: