我很困惑——什么时候应该使用 XML 序列化,什么时候应该在 .NET 框架中使用二进制序列化?
问问题
23321 次
3 回答
37
现有的两个答案都集中在“跨平台”上,但这是一个不相关的问题。他们在那里提出的观点是“BinaryFormatter
如果你在做跨平台,就不要使用”——我完全支持。然而,有一系列非常跨平台的二进制序列化格式 - protobuf / ASN.1 是主要示例。
所以,让我们看看每个人都提供什么;
- 二进制文件通常更小,处理速度通常更快(在两端),并且不容易被人类阅读/编辑
- 文本格式(xml / json)往往比二进制更冗长(虽然通常压缩得很好),但很容易手动处理;但是处理映射的所有文本往往会使它们变慢
- xml 是非常常见的 web 服务,并且受益于 gooling 支持,例如 xsd、xslt 和强大的 xml 编辑器
- json 是基于浏览器的通信的主要参与者(尽管它也用于 Web 服务) - 往往不太正式但仍然非常有效
请注意,只要您选择适当的二进制格式,互操作性既不是优势也不是劣势!
于 2011-01-20T05:49:44.727 回答
14
特定于 .NET,如果您有两个使用相同类型系统的应用程序,则可以使用二进制序列化。另一方面,如果您有不同平台上的应用程序,则建议使用 XML 序列化。因此,如果我正在编写一个聊天应用程序(客户端和服务器),我可能会使用二进制序列化,但如果我后来决定我应该使用 Python 来编写客户端,那么我可能不会。
于 2011-01-20T04:47:27.587 回答
2
如果您想要用户友好或跨平台输出,请使用 XML。此外,XML 序列化使用公共字段和属性进行序列化,您可以根据需要使用属性和自定义序列化在类级别更改/重新格式化输出。Bin.Ser. 使用私有字段进行序列化。
于 2011-01-20T05:10:24.183 回答