【发布时间】:2013-12-21 10:32:39
【问题描述】:
好的,我们对某些内容进行序列化/反序列化,但是当您处理人们的重要数据时, 您需要确保对象在 100% 上正确序列化/反序列化。例如,假设您的应用程序在序列化期间死亡/被强行关闭。在大多数情况下,您会得到损坏的对象,这对我来说是不可接受的,我不知道我可以手动备份文件并写入标志, lke 在开始序列化之前未提交,并在进程结束时添加已提交标志,如果在反序列化期间未提交,则从备份中获取文件。这不好,因为每次更改后我都必须备份非常大的文件。 .NET Framework 或 protobuf 中流行的序列化程序中是否有一些内置的故障安全逻辑?我找不到任何关于故障安全序列化的信息。 或者你能告诉我一些好的模式如何使序列化失败安全吗?
【问题讨论】:
-
没有。如果“非常大的文件”是您的问题,那么您显然需要转移到数据库。支持交易。
-
IMO 你可以解决这个问题的序列化:首先序列化 - 现在你有了数据:如何以故障安全的方式原子地改变数据?这是一个众所周知的问题,像 RDBMS 这样的人非常了解。
-
@HansPassant 是的,交易。不幸的是,这是一个很大的旧应用程序,由于内部原因,他们不会切换到数据库,存在性能问题。序列化器处理原始数据要快得多
-
@MarcGravell 现在我们正在这样做......我们正在为对象使用未提交/已提交标志。但这不是很方便,而且我们不时会遇到错误。在序列化程序中拥有像可选事务这样的东西会很高兴:)。我认为这可以通过一些开销来实现。
-
@Brans “序列化程序中的事务”甚至是什么意思?
标签: .net serialization protobuf-net